Wednesday, July 26, 2006

Disaster.

I spilled a full bottle of Lucozade over my MacBook and it immediately shutdown. I had no backup of my work. I had not committed my work on tab dragging to BugZilla.

I only have an iMac G4 700Mhz with 384MB RAM to code on until this has been fixed. I may aswell be coding on a BBC Computer.

Wednesday, July 19, 2006

End of 2nd month assessment

Shortly after my first end of month assessment I submitted my first patch to BugZilla. On reflection is was a disaster and the code was nowhere near it needed to be. At that time I was naive enough to think my patch would see r+ approval by the end of that week. I am still working on this patch and iterating it. I am currently on my 4th formal submission and things are getting closer to being feature complete. There are still some huge problems with the design of the code but I am working with the close reviews of Stuart Morgan, Nick Kreeger, and Bruce Davidso to improve things.

I posted a video to show the people of the world exactly what Camino was getting for it's money. It sparked quite a lot of discussion between people on IRC and people in the Comments. A lot of this discussion was negative and certainly detrimental to the progress that I have been trying to make. I had to block out most of the 'community' for a couple of weeks because I was hearing was that what I was doing was a massive mistake and that people did not want it. I guess these problems were me own doing since I had been very keen to hear what people thought about things, I just struggled to deal with all the negativity.

(This feels like something I would post to LiveJournal, if I had an account)

Pink and I agreed that it was time to get some work done on the 2nd milestone - dragging tabs to re-arrange them in the tab bar. Progress on dragging tabs has been terrible in comparison to progress on the scrolling-tab bar. I tried working on scrolling tabs in the morning and dragging tabs in the afternoon which was a complete disaster.

I also probably made a mountain out of a molehill with respect to receiving my pay cheques from Google. I received my first cheque the other day. The cheque was dated 20th June 2006 and the date it was sent (dated on the parcel) was 12th July. It arrived on 17th July. I don't know what the cheque did between 20th June and the 12th July, I just hope it doesn't take that long for the 2nd cheque to arrive. I don't really feel it is a good idea for me to talk negatively about the hand that feeds so I'll cut short this part of the assessment.

I finally have a Safari Bookshelf Account. We are able to take out 10 books at a time, sadly nearly all of the books that I have any interest in taking out are books that I have already had to buy to learn Objective-C and Cocoa. I'm sure that with nearly 4,000 books to choose from there will be other things that interest me. It is actually quite nice of O'Reilly to give us this for free, so a big thanks to Chris DiBona at Google who seems to have spent quite a while negotiating it for us.

I showed off a new work in progress demonstration much to the delight of Pink. It felt good to get some more code out of the door and into the BugZilla torture chamber. I only need to add 3 more features to make tab-scrolling feature complete but they are by far the most difficult things to do.

I am very concerned about the progress that I have been making on draggable tabs. I need to stop working on scrolling tabs during the day and really focus my efforts of draggable tabs. I only have one more month to reach the targets of this project and I honestly cannot see it happening at the moment. Considering how long it has taken me to get my scrolling tabs patch through BugZilla to a stage where people think it might be a couple more iterations away from R+ which is fantastic to hear, but also leaves me really concerned that draggable tabs will not land on time and I will fail to reach the goals of my project.

I need to pull myself together and start working harder. There would be nothing worse than to have come this far and not acheive what I set out to do.

(I will probably re-read this later on today and re-word some things or cut complete sections / add new sections)

Tuesday, July 18, 2006

An unproductive day, 8 weeks GSoC tomorrow, 10,000 readers

Today was really unproductive. I spent the morning flustering over figuring out how to make sure that my NSButton objects on the tab bar actually responded to mouseDown and mouseUp events so that I can enable 2 much needed features. Double-click will allow users to scroll a full tab bar width of tabs at a time, and click-and-hold-down-on-button will continue to scroll through the tabs until the user lets go of the mouse or the final tab is reached.

I also tried to implement Stuart Morgan's recommendation to refactor |layoutTabs| which is sorely needed as it is over 200 lines long but I struggled get my head around how to get it done. I have decided to sleep on it and hopefully tomorrow things will make sense.

As of tomorrow I will have been a Google Summer of Code Student for 8 weeks. I really need to start getting a move on or I will not finish my project on time. I will write an evaluation of the last month tomorrow so that I can take a look back on my progress.

On a slightly more positive note, more than 10,000 different people (based on a cookie that the counter uses to keep a track of who has visited) have read my blog since I started the counter on Friday 30th June.

Monday, July 17, 2006

Cheque!, hammered by Blogs of Note, Monday

My first cheque arrived today so I am off to the bank to cash this baby. It has been a long time since I had some income so this feels good! I would post a photo of it but somebody would use it to steal my identity or something crazy.

As you can see below, being listed on the Blogger.com Blogs of Note page sharply increased the number of visitors to my blog. I average about 100 - 200 per day except when I haven't posted anything because I am a lazy bugger.

I have spent this morning iterating WIP4 and will spend the rest of the day working on trying to make M1 feature complete alongside discussing my logic, or lack of logic with the reviewers.

Orlando Salcedo has linked to my blog, as has Alex King - thanks guys!

Edit: I forgot to include this earlier so I decided to include it now when I noticed that the title of this post was incorrect. I recently turned on Comment Moderation and I've had to reject about a dozen comments so far. I rejected a comment that was actually a valid comment so here it is in all its glory:

Yeah Oh Unbelievable Really
But Little Open Great
Silly Ugly Cool Kill Sad.

decode the secret message and the truth will be revealed
I based my opinion of the final sentence, but after I actually decoded the message it seems like it was a valid comment. Senor Cheeseburger should have been allowed to express his thoughts, it is a shame he made it look like spam!

Friday, July 14, 2006

Comment moderation, YouTube?!

I have decided to turn on comment moderation due to the number of people leaving spam comments. I hope that this will stop the comments from being filled with posts that do not contribute anything.

In other news, Justin Williams of MacZealots fame has a rather charming comment in a link to my latest WIP demonstration on his blog:

Google's Summer of Code is certainly paying off for the Camino project.
Thanks Justin, that makes me smile :)

And rather bizarrely, the WIP3 demonstration has been YouTubed...

Thursday, July 13, 2006

WIP4 demonstration

It is over 24 hours late, but I wasn't slacking, honest. While I was recording the Quicktime movie I noticed some bugs, then I noticed some more and some more and I ended up working on the code until 1am. Then after a good sleep I figured out how to make full keyboard access work and all is good.

Allow me to talk you through this new demo [24MB, Qucktime H.264. If you have any problems viewing this in your browser please try downloading it to your desktop and watching it.]

  • I used Boinx Mousepose 2 to put a spotlight around the mouse pointer to make things easier to follow. The action is not always where the spotlight is though! Also, the mouse pointer drags behind the mouse from time to time, I think this is a problem with iShowU.
  • After selecting the Bookmark Manager I open up lots of tabs so that overflow is activated. At this point you should try to notice that the scroll left button is disabled, the scroll right button is enabled.
  • You can scroll to the left and right to show the tabs in the tab bar changing appropriately
  • You can change the currently active tab using the keyboard (command+option+-> or command+option+<-) and the tab bar behaves itself.
  • A hyperlink is selected to open in a new tab and as new tabs are not set to open in the background the tab bar slides to have this new tab as the right-most tab.
  • Resizing the window doesn't break anything anymore.
  • Now I open a 2nd window and cause it to overflow just to show that things work in my than one window - at the end you can see that the status of the 2 seperate tab bars really are different but the status of the icons.
Status of M1: WIP patch 4 is ready to be submitted for the displeasure of the reviewers.

Current Bugs (that I have noticed):
  • Double clicking on a disabled scroll button creates a new tab.
  • There are some hilarious drawing issues, from time to time, that don't make sense.
  • There is probably a lovely memory leak because after I've been playing for a while it takes up to 10 seconds to close Camino.
  • Full keyboard access current allows a user to go from tab 0 to tab n -1 back to tab 0 if they continue in that direction, I need to fix this, it is insane.
Features that need to be added:
  • Users should be able to double-click to jump a tab-bar width number of tabs in either direction.
  • Animated sliding!
Are the lack of these features blocking this patch from being super-reviewed? Only Pink knows. If I can get some feedback on my latest patch and iron out the bugs in it then maybe he might think about a SR+

Tuesday, July 11, 2006

Welcome Blogger.com readers!

It has been drawn to my attention that I have been listed on the blogger.com Blogs of Note ticker - awesome! I decided to put together a little post so that people can get a quick overview of what this blog is about.

I am a Google Summer of Code student working with Mozilla on their Camino browser. I blog my thoughts, ideas, and the progress (or lack of) on my project. These links might be of interest to you if you fancy getting a quick aquaintance with my blog:

If I had not taken the advice of a close friend, I might have put up with AdSense adverts in the sidebar and then maybe I could have had some free as in beer money! But she was right, it was not ethically sound and nobody looks at adverts anyway!

M1 draws nearer, WIP4 tomorrow

The aim of M1, as stated in the summary for the bug that I am working on was
When a tab in the overflow menu is active, highlight the overflow menu (or scroll the tab bar).
I really do not like the overflow menus in Safari, or Camino. They do not feel like a nice and clean way to deal with the problem. It turns out that there isn't actually a nice and clean way to deal with the problem and that I will probably have to allow people to use overflow menus as a control-click option. Or that the whole ticker-style implementation might need to be dropped and I'll have to have double overflow menus which simply bring the active tab and the tabs around it into the tab bar. (In retrospect, that would have been a thousand times easier to implement, but it is not nearly as pretty). However, I stand by my decision to implement it as a ticker bar because the point of M2 is to allow users to drag tabs to reposition them and the mere thought of having users drag things out of menus makes my head hurt.

It turns out that the people developing Firefox 2 are also working on a ticker-bar for their tabs. Is this a case of great minds think alike or that fools differ?

Jasper Hauser proposed that things should look like this. Things do kind of look like that, I have removed the double headed arrows and replaced them with some shoddily ripped direction arrows as you are used to seeing in all OS X scrollbars. Hopefully when Jasper is less busy he can provide us with some really nice icons.

The following features / benefits will be available to users:
  • When a user has more tabs than what can currently fit into the tab bar, two arrows will appear at their side of the bar that indicate their state (disabled if a user cannot scroll in that direction)
  • Clicking on either of these arrows allows a user to scroll along their tabs in that direction, it this is possible.
  • If a user expands the window and there are more tabs to right then these tabs shall be shown first; if the user has expanded the window and there are no more tabs to the right then start showing more tabs to the left.
  • If a user shrinks the window and then the active tab will always stay visible in the tab bar - at the right most of the tab bar is the shrinking causes it to not be in the tab bar.
  • If a user has scrolled away from the active tab to the left and use full keyboard access to change the currently active tab then the tab bar will scroll back to show the active tab left-most. If they are scrolled away to the right then and FKA commands issued to Camino will cause the active tab to be the right-most.
  • Newly created tabs that are not set to load in the background will always grab the attention and shift the tab bar so that the right-most tab is the newly created tab. *
I plan to post another video tomorrow showing each of these features because some of them are easier to have an opinion on based on actually seeing them.

Simon Fraser has continuously voiced his opposition to a scrolling tab bar because he believes it to be bad for positional memory. Although he appears to have softened up ever so slightly if I animate the scrolling. Having the tabs visually move is not a requirement for WIP4, and is more of a polishing exercise that will be part of WIP5. I think that Pink might be happy enough to SR+ WIP4 after it has been R+ (which might take a few iterations)

The are only 3 bugs - in terms of what I have tried to achieve:
  • Click-and-hold does not continue to scroll along the tabs in the appropriate direction.
  • If the active tab is to the left then there is no divider drawn between the left scroll button and the first tab (I know what it causing this, but am flummoxed as to how to fix it)
  • I forgot the third one.
For WIP5 I plan to include animated scrolling of the tabs, and perhaps double-clicking on the arrow will shift the tabs along by # of visible tabs at a time - a la Dashboard - for the people who have lots of tabs open to get places faster.

Hopefully some real user testing after being SR+d will point out the subtle problems and performance issues.

* This makes me wonder whether or not opening links in a new tab should create that tab to the immediate right of the currently active tab or not. But that is a conversation for another day!

Thursday, July 06, 2006

Dragging tabs, lack of sleep, concurrent projects

Progress on achieving M2 has been slow this week. My lack of sleep is destroying my ability to concentrate. I manage about 4 hours per night and those are normally interrupted hours. I've touched all of the files that I believe I need to to implement tab dragging and I've started writing the code for it but I just cannot get into the swing of things.

I've been trying to work on overflowing tabs in the morning and dragging tabs in the afternoons and this is just not working out. I'm going to change to working 2 days/week on overflowing tabs and 3 days/week on dragging tabs.

I need to have some more work completed soon so I can continue to show people videos of what I have been doing! I feel like I'm spending a lot of time fine tuning overflowing tabs and the differences are not all that noticable to the user.

I've got a job interview tomorrow for the Edinburgh International Film Festival!

Google are looking into where my first pay cheque is, and I think that Pink has submitted my midterm evaluation. It will probably say exactly the same as every school report did "Has some potential, must try harder" - we all know the feeling.

Tuesday, July 04, 2006

Mighty Mouse, MooBook, Mentor Survey!

I bought a Mighty Mouse! (I feel the need to exclaim because it sounds ever so grand) because every new desktop Mac seems to ship with one so it made sense to also program in full mouse control of the scrolling tabs at some point. £35 is one heck of an expensive mouse.

My MacBook moos at me.

The progress of my interim evaluation. Google have set the deadline for tomorrow which is a little silly seeing as every Mentor who lives in the USA will have been celebrating Independence Day weekend.

Finally, we are meant to get in touch with Google if we have not received our first paycheck by tomorrow and considering that I have not even received a tracking e-mail for it yet, it is not likely to magically appear. I need to eat!

Monday, July 03, 2006

An assortment of thoughts

I 'installed' a StatCounter on the blog template on Friday to keep track of how many people are reading and where they are coming from. You will pick up a cookie as a result and the nice people at StatCounter assure me that this is used to determine if you are a returning visitor and to determine how long your visit lasts.

I stalked Mike on Wikipedia last night and found out that people call him Pink and that he likes cats.

Before the tab scrolling patch goes into the trunk it needs the following done - click and hold needs to scroll until the end of the tabs in that direction; opening new tabs needs to shift the tabs so that the most recently opened tab is the right-most tab; the buttons at either side need to indicate state. Furthermore, animated movement will be a requirement, but for the first submission to trunk.

This week I will be working in the mornings on the tab-scrolling patch and in the afternoons on the tab-dragging patch.

Finally, Daring Fireball, MacUser, Digg, Giles Turnbull (again, thanks!), and John Hicks linked to my blog so a massive thanks to them for paying attention.