Jeff Dlouhy Peter JarosI Love Camino!

About Jeff

I am a 19 year old sophomore at Northeastern University in Boston. This summer I am responsible for bringing Tabsposé to Camino. Outside of Camino I also work on my own projects such as Corripio located at nClassSoftware.com.

Contact

email:
Jeff.Dlouhy@gmail.com
camino irc:
jeff
aim:
fanta stine
facebook:
Jeff Dlouhy

About Peter

Peter is a senior at Bard College. He's spending his summer making Camino scriptable. When he's not doing that, he's probably writing dirty, dirty hacks that he's too embarrassed to show the world. That, or working on his own website. (coming soon)

Contact

email:
peter.a.jaros@gmail.com
camino irc:
peeja

 Subscribe in a reader

Camino Blogs

Recent Posts

Archives

Tab Dragging

Jeff Dlouhy - Thursday, October 11, 2007 at 03:20 PM

image
I have been building off Desmond’s work from last year and trying to implement tab drag and drop a.k.a. Bug 160720. 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’ll have more on that later on. I’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.

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’s patch the thumbnailing is done at the Gecko level. That means fewer crashes!

Summer of Code Talk

Jeff Dlouhy - Thursday, October 11, 2007 at 11:28 AM

image
A few weeks ago I was asked to give a presentation for my school’s ACM chapter 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.

Google Video | Slides

SoC Reflections

Jeff Dlouhy - Wednesday, September 26, 2007 at 03:16 AM

image
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?

The Mozilla Foundation

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 mentoring organizations, the only Cocoa related program I saw was Adium.

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 VLC 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.

Great Success

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.

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.

My Experiences

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.

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.

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.

Daily Affirmation

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.

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.

Pimp Your Toolbar

Peter Jaros - Tuesday, August 28, 2007 at 11:05 PM

Ever tried to customize your Camino toolbar and been…disappointed?  You call this customization?  There, what, about 20 items to choose from, and that’s it!  Plus, look at these choices: Back, Forward, Refresh.  I mean, they’re useful, sure, but where’s the excitement?  Where’s the fun?

“I could think of way better toolbar items than this!”

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


“Hello, World” icon unwittingly provided by the fabulous iWoot app.

Anything you can do in an AppleScript, you can do from your toolbar.  In fact, anything anyone else can do in an AppleScript, you can do from your toolbar.

Hang on, pardner, it’s not out yet.  Script Toolbar Items should be landing in the near future, though.  Look for it soon (ish) in nightlies, and eventually in Camino 1.6.

In the meantime, think about this: what do you want in your toolbar?

Clicks Land!

Jeff Dlouhy - Friday, August 17, 2007 at 01:29 PM

image
A quick update on Tabsposé. You can now click through the site previews in Tabsposé. Try it out on the latest trunk build!

Back In The USA

Jeff Dlouhy - Wednesday, August 15, 2007 at 04:59 PM

image
I’m back from my 2 week jaunt in Europe. I had a great time and got to see a lot of beautiful places. The picture above is of me with Tim Berners-Lee’s NeXTcube at CERN which acted as the first webserver, home of the first web browser, and the World Wide Web. Since I am now developing for a web browser I thought it was amazing to see the place where its ancestors came from.

Now that I am back look out for click handling and titles landing sometime hopefully soon.

AppleScript Lands Too!

Peter Jaros - Friday, August 10, 2007 at 12:15 AM

The beginnings of the new AppleScript support has landed on trunk and branch!  That means you’ll see it in all the nightly builds (trunk, branch).  Grab one and open its dictionary in Script Editor.  Anything that doesn’t have to do with bookmarks should be implemented and working.  For instance, you can say:

set website_listing to ""
tell application "Camino"
    repeat with i from 1 to (count browser windows)
        set website_listing to website_listing & "Window " & i ¬
            & return
        repeat with each_tab in tabs of browser window i
            set website_listing to website_listing & "    " & ¬
                (URL of each_tab) & return
        end repeat
    end repeat
end tell
get website_listing

and get something like this:

Window 1
    http://developer.apple.com/reference/Cocoa/idxScripting-date.html
Window 2
    http://developer.apple.com/cocoa/applescriptforapps.html
    https://bugzilla.mozilla.org/show_bug.cgi?id=385989

Not a terribly interesting example, but it shows off what you can do.  Go ahead, be creative!  See what cool uses you can come up with.  And remember: bookmark support is coming soon.


Clicks Cometh

Jeff Dlouhy - Thursday, August 02, 2007 at 02:03 PM

image
Hot off the heals of Tabsposé landing, I have a patch up that will handle user clicks and switch tabs. Hopefully we’ll see this patch move quickly into the trunk so Tabsposé will actually be useful.

I’m also working on Bug 390576 which will add titles under the thumbnails as shown in earlier screenshots.

Today I leave on vacation for Switzerland and France. I’m taking my work with me and hope to get features done in some beautiful locations wink . I just got to be extra careful about my iPhone data plan.

Tabsposé Lands!

Jeff Dlouhy - Wednesday, August 01, 2007 at 02:25 PM

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 nightly builds. Right now the command is ‘ctrl + command + t.’ 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 “why does ____ not work” comments for now.

In addition to the source landing, I now have my first Tabsposé bugs: Bug 390406 & Bug 390401.

Let me know what you think!

Bookmarks: Check (almost)

Peter Jaros - Thursday, July 19, 2007 at 10:47 AM

Man, is this only my second post here?  I’m not too good at this, am I?

Luckily, I’ve got nothing but good news to report.  The bookmark code is now feature-complete!  It’s also pretty much at zarro boogs.  (Can you be almost at zarro boogs?).  All that’s left is a little code clean up.  About half the existing bookmark code was unused scripting support which I’ve partly used and partly overridden.  I’m going to weed out what’s not being used and move what is being used into my ScriptingSupport.mm silo.  I’m implementing scripting as a series of categories on various classes, which seems like the cleanest, most encapsulated way to do it.  They all reside in one file, ScriptingSupport.mm.  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.

Nitty gritty under the fold:


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

How much do you think BrowserWindow loves getting the call [[BrowserWindow alloc] init]?  Or better yet, the class that implements tabs, BrowserWrapper?

(Hint: Not a whole freakin’ lot.)

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

So: bookmarks and bookmark folders can be “make”ed, windows and tabs can’t yet, but it’s a future possibility.  Next up: Toolbar Items.  I’ll post about it soon, so stay tuned.


Reviews

Jeff Dlouhy - Thursday, July 19, 2007 at 04:20 AM

Not much news on the Tabsposé front recently. I have spend the past week optimizing code and going through the review process for my first patch. Once the first patch makes it in the repository, it will be followed by a smaller one dealing with click handling as seen in my screencast. Soon you will be able to play around with it on Camino’s trunk build. Until then, no Tabsposé for you!

Interpolation

Jeff Dlouhy - Monday, July 09, 2007 at 05:11 AM

image
In some of the past screenshots of Tabsposé the thumbnails looked jagged. One of the things I worked on this weekend was getting the images to look smooth by setting the graphics context to use ‘NSImageInterpolationHigh.’ There is a minor performance hit that comes along with using this; however, it produces very good looking thumbnails. Here is an example with normal interpolation and one with high interpolation.

I also started to add the site title to the bottom of the preview. A screenshot can be found here.

Tabposé Screencast

Jeff Dlouhy - Friday, July 06, 2007 at 10:28 PM


Here is a quick screencast I made showing the progress so far on Tabposé. I will be posting more in the days to come, if you are wondering how it scales you can find a screenshot of 14 tabs open here.

Hey, Roomie!

Peter Jaros - Thursday, June 28, 2007 at 02:54 PM

Well, it’s about time I spoke up.  Greetings from beautiful Upstate New York.  My name’s Peter, and I’m the other guy.  Google couldn’t give Mozilla quite enough Summer of Code slots for more than one Camino position, which went to Jeff, but thanks to the hard work of Sam, Pink, and I’m-not-even-sure-who-else, Mozilla and the Camino Project are funding my project anyhow.  What is that project?  You might well ask.

I’ll be bringing AppleScript support—real, honest to God scripting—to Camino.  Scripting support bugs have been waiting around on Bugzilla since at least 2002, and this summer I intend to deal with most of them.

The first part of this project is Windows & Tabs.  Scripts will be able to interact with browser windows and the tabs they contain, getting their URLs and titles and setting their URLs as well.  (Hopefully I’ll find a way to do things like “make new browser window”, but the “make” command is apparently full of bugs on Apple’s end.  We’ll see.) The main development for W&T is over as of yesterday, and as of today the new code is waiting for its second review.  You can follow along at home if you like.

Next will be Bookmarks & History.  Stay tuned.


Googleplex and Google NYC In 1.28 Weeks

Jeff Dlouhy - Thursday, June 28, 2007 at 02:14 PM

image
I was fortunate enough to visit the Googleplex while I was out in California. It is quite a surreal environment with people on scooters, segways, bikes, you name it. There just seemed to be people everywhere and each and everyone of them seemed happy, how could they not be? Google goes beyond what most places would call a “relaxed environment”, they have a nerd Shangri-La. Beyond the amazing food and endless micro-kitchens, Google is a great place to let your creative juices flow. Some might call it a college atmosphere, but it goes beyond that. Google is in a category all by itself, it has a Google atmosphere.

The day after I visited Google HQ I flew back home to New Jersey and was invited by one of my friends to come and visit him in the Google NYC office. So a little over a week after visiting the Googleplex I got to indulge in more excellent food and ride more scooters. Google NYC is unique, as I am sure most of their remote offices are. They occupy a few floors in their massive 9th & 16th avenue building and have a very cool display of vintage computers. While I was there I also got to meet Mark Mentovai who is one of the project leads on Camino.

After visiting both of these offices and seeing what they have to offer all I can say is “wow.” I hope I get the privilege to work in one of their offices someday.

New Roommate

Jeff Dlouhy - Wednesday, June 27, 2007 at 04:41 AM

Applescript
This announcement is sorta old ... but Camino has a second Summer of Code student. Peter Jaros will be working on improving Camino’s Applescript support. The Mozilla Foundation and Camino are funding Peter. In the next few days you will start to see posts from him, as he too will be spending his summer making Camino even better. Sorry that it took me so long to get you on the blog Peter rasberry.

Tabposé’s First Steps

Jeff Dlouhy - Tuesday, June 26, 2007 at 04:23 AM

image
Tonight Tabposé started to show it’s first signs of progress. I was able to get thumbnails of all the open tabs aligned into a grid. The previews are jagged and distorted and the grid acts funky sometimes, but it’s a start. I am going back now to clean up and refractor some of the code and hopefully submit my first patch to the project. Sorry about the lack of posts, I had to switch web hosts ... again…

Here is a close-up. Oh and ignore the sliders. smile

Camino Meetup

Jeff Dlouhy - Sunday, June 17, 2007 at 02:49 PM


This weekend I am in Mountain View for the Camino meetup. It has been great meeting everyone and being able to put a name to a face. There are some exciting things that are coming in the next few releases of Camino. Also on thursday my homebrew server starting acting funky and so I decided to be daring and upgrade Apache… bad idea on Gentoo. So after hours of hard work I still had no luck. I decided to move my plans to move to a new host ahead by a few months. Many of my sites are down as of now and I will slowly bringing them back online once I learn how to uses the convoluted networkredux cPanel system.

Sorry in advance about any issues you might run into. 

Update From WWDC ‘07

Jeff Dlouhy - Wednesday, June 13, 2007 at 01:06 PM

My trip out to California has been great so far. This year Steve Jobs stated that there were over 5,000 attendees at WWDC and boy does it feel like it. There is a noticeable difference in the amount of people from last year. Along with this Apple has seemed to become cheeper with no campus bash, less food in the morning, and no student sunday. On top of that students were not allowed into the main Keynote and had to watch from a overflow room. There will be more on that later...

Overall WWDC has been great. There are good sessions, good people, and ok food.

WWDC 2007

Jeff Dlouhy - Friday, June 08, 2007 at 01:36 PM

image
Tomorrow I leave for San Francisco to attend what looks to be an amazing World Wide Developers Conference. I had an amazing time last year and I’m very excited for this year’s events and sessions. I like the whole Universe/Carl Sagan theme they have going on there, probably since Leopard will be making them ”Billions and billions.

I will be attending all of the events that don’t require me to be 21. If you want to hang out or meet up, shoot me an e-mail.

See you in sunny California!

Gradients Shmadients

Jeff Dlouhy - Wednesday, June 06, 2007 at 10:50 PM

image
I have finally made some visible progress on Tabposé! Tonight I was able to get a grey to white gradient to display in my TabposeView. After reading up on the not so friendly CGShading I set out to get this basic component of Tabposé done. I think that this gradient helps the overall look and feel of Tabposé, similar to how exposé and dashboard have that semi-transparent background. You can find a boring screenshot of my progress here.

As I said above, CGShading is no walk in the park. Here are some links that you might find useful when you decided to add gradients to your apps. Some people will use images to get this effect; however, this will cause problems when we start seeing higher DPI screens and resolution independence in Leopard. CGShading is a wordy, yet elegant solution.

With this canvas I can now start to paint my picture…

Happy Hacking

Jeff Dlouhy - Tuesday, June 05, 2007 at 06:00 AM

image
The other day all GSoC students received a little package. Enclosed was a gift from Google, Producing Open Source Software by Karl Folgel. A thoughtful gift for the start of coding. In it Fogel discusses what it takes to have a successful open source project as well how to deal with the human aspect while working on one.

This book is great for anyone just getting into open source development or someone who might need some help with their current projects. The book is released under creative commons and is available free online at producingoss.com.

To top it off the book was signed by Karl Fogel saying “Happy Hacking.”

Thanks Google!

Splitting Hairs

Jeff Dlouhy - Tuesday, June 05, 2007 at 01:09 AM

image
I think when I start getting distracted by buttons being slightly a different color from one another, that I have had one too many coffees. In the past few days I have been brushing up on my Quartz as well as getting my Tabposé view displaying in the browser as my mentor Stuart suggested.

Nearing the end of my coding for the night I started to notice that some of the buttons in the BrowserTabView were slightly different shades of grey. I would think that since the buttons are “etched” into the same bar that they would be the same color. The different colors might be on purpose or it’s such a minuscule difference that it doesn’t matter (thats my bet tongue laugh).

I know I am totally splitting hairs and that the images were probably made at different times by different people. Just for fun, here are the values of the different buttons which I attained with DigitalColor Meter:

Overflow Arrow (disabled)

  • R - 36237
  • G - 36237
  • B - 36237

Down Arrow

  • R - 30326
  • G - 30326
  • B - 30326

Close Button

  • R - 44461
  • G - 44461
  • B - 44461

I know. I need a life…

image
image
image

Cuarzo

Jeff Dlouhy - Friday, June 01, 2007 at 11:25 PM

image
Today I received Programming with Quartz: 2D and PDF Graphics in Mac OS X from Amazon. Quartz or Core Graphics is the graphics layer introduced in Mac OS X. Quartz allows applications to draw beautiful resolution independent images to the screen or “graphics context.” Don’t let the book’s ugly cover fool you, Quartz is a very attractive technology.

Currently Gecko 1.8.1 still uses QuickDraw which is a graphics layer with ties far back as System 1.0 eek. Soon Gecko will have a new vector graphics library called Cairo (see Cairo beats Safari) which utilizes Quartz. This was a necessary change since QuickDraw was depreciated in 10.4 Tiger and has trouble ahead since Leopard will be resolution independent. QuickDraw definitely held back the adoption of Gecko based browsers on the Mac in the text appearance category. That will soon however change with the advent of Cairo. Text now looks fresh and crisp.

So far Programming With Quartz looks to be a good read. After sitting hunched over at my iMac all day it’s nice to be able to sit back and relax with a good book. This one will definitely help me along they way on my graphics programming adventure.

Useful URLs

Jeff Dlouhy - Wednesday, May 30, 2007 at 11:38 AM

image
As we begin it might be useful for you to have a few links related to the project.


Tabposé Mockups

Jeff Dlouhy - Tuesday, May 29, 2007 at 07:11 PM

Tabpose
I originally posted this on my nClass Software blog, I have now since copied it over here. On the 22nd we had the first scoping meeting for my GSoC project. After we made some preliminary decisions in the meeting, I set out to make some mock-ups of how I envision Tabposé. You can find the mock-ups here.

And They’re Off…

Jeff Dlouhy - Tuesday, May 29, 2007 at 06:44 PM

image
Welcome to the second installment of Summer of Camino. Here you can follow along as we bring Exposé to Camino and create Tabposé. Between coding and sleeping (if I get any) I will be writing up my experiences as a Google Summer of Code student as well as what it is like to be apart of the Camino team.

So sit back and enjoy the code…

© 2007 Jeff Dlouhy. All rights reserved.