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 26, 2006
Disaster.
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 ReallyI 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!
But Little Open Great
Silly Ugly Cool Kill Sad.
decode the secret message and the truth will be revealed
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.
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.
- Users should be able to double-click to jump a tab-bar width number of tabs in either direction.
- Animated sliding!
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:
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. *
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.
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.
Wednesday, June 28, 2006
Bug fixing is fun (not)
Bugs that still exist in the code:
- Newly created tabs that are selected do not cause the tab bar to scroll along to make it the right-most tab.
- If a tab is currently selected and is to the immediate right/left of the tab bar then there is no divider.
- The current implementation does not obey the Full Keyboard Access rules that are currently in place <- a massive headache!
Rant, apology
I ranted at somebody who has been a great help to me so far. I didn't mean to rant directly at him, I should have posted my concerns to my blog and made them more general instead of them sounding like me shouting at one person in particular.
Sorry!
Monday, June 26, 2006
Visual representation of M1
Since tomorrow is a 20% day I have decided to post a short movie this evening. The hope is that by the time I return on Wednesday morning there will be some reasonable feedback based on what you see.
I used iShowU to create this Quicktime movie. It cost me $20 and I'm pretty happy with it so far. No, I didn't get iShowU for free and I am not being forced to promote it.
So, without further ado, a tab-scrolling Camino demonstration! (4.6MB)
Bugs that still exist in the code:
- Newly created tabs that are selected do not cause the tab bar to scroll along to make it the right-most tab.
- The current scroll buttons do no indicate whether or not it is possible to scroll further in that direction.
- Resizing the window while scrolled away from the left-most tab causes re-draw problems.
- If a tab is currently selected and is to the immediate right/left of the tab bar then there is no divider.
- Upon closing a tab that is right-most in the tab bar the tabs are not resized correctly. This is a regression from the first patch submission to the second patch submission.
Some open problems that I'd appreciate feedback on:
- If a user has 100 tabs open, how can we make it easy for them to scroll to the tab that they want to get to?
- How should a user be able to determine how many tabs they have in the active window?
- How animated should the scrolling transition in the tab bar be?
Progress on Milestone 1
Spent today attempting to bug fix, make some good progress and only have 4 'bugs / features' of my code to iron out:
1. Newly created tabs do not cause the tab bar to scroll to make it the right-most tab.
2. The current icons do not indicate whether or not you can scroll any futher in that direction.
3. The left-most visible tab index is not being changed when you resize the window.
4. If a tab is currently selected and it is to the immediate left or right of the tab bar then there is not divider drawn.
My code is currently undergoing it's second review by Bruce Davidson and Nick Kreeger. They are firm but fair and their feedback is really constructive. I need to watch my indentation and the way I set out my if { ... } else { ... } statements, watch how I name variables, and watch my comments.
Since tomorrow is my 20% day - true Google style, without the massive Google paycheck - I plan to have these problems ironed out by the end of Wednesday. I also plan to post the small video that I promised earlier on Wednesday evening.
Ian rightly pointed out that my patch will never make it into the trunk by the weekend - I will make a post when it eventually gets in there.
First patch submited, bug fixing continues
I submitted my first patch on Friday. The code doesn't quite work, but as Mike predicated the review process has been pretty valuable. I've been fixing the nits and picks in the patch this morning and plan to spend this afternoon ironing out the redraw bugs that are plaguing the code.
I'm hoping that by Wednesday I can have this patch ready for a final submission and hopefully it will be r+ and in the trunk by the weekend for those of you who use the nightly builds to play with.
When I iron out these bugs I will be posting a small Quicktime Movie file of what a scrolling tab bar looks like - this is for those of you not wanting to use nightly builds but are still interested in seeing the progress.
Thursday, June 22, 2006
TinderWidget
Nick Kreeger, one of the Camino developers, has written one of the most superb little Widgets I've ever used!
If you write code for Camino and you don't have this then go get it.
Wednesday, June 21, 2006
My end of month assessment
This is probably going to be a long post, this is a warning.
I decided to write this because Mike has to submit an evaluation of me on the 30th June, but I do not have to submit an evaluation of him until 5th September and I thought he might like to know more about how I've been doing. This is my evaluation of my first month as a Summer of Code student.
Exactly 4 weeks ago today I was informed by Google that I had been accepted to the Summer of Code Program. I was pretty excited upon hearing the news. I had spent about 2 weeks meticulously preparing my proposal and chatting with the Camino developers on their IRC channel to hone my proposal to something that either Mike or Mark would be interested in. I was in the middle of my junior honours exam diet at the time which put even more pressure on writing a good proposal.
After celebrating with a few beers and a few friends I started on my proposed schedule. I almost immediately consulted the community to see if they could suggest anything additional to my proposal. There were probably about 100 comments between the mailing-list and the MozillaZine forum - some of them posed interesting questions, some of them were not quite as interesting...
One of the most important things for me to do during this project was to be as transparent as possible with the community. When Aaron and Hakan came to the WWW Conference in Edinburgh and we met up for a beer I remeber Aaron saying to me "If you think you want to do something that will benefit the community, then go for it!" I'm not sure if that was before or after a few beers :)
During this time I purchased a copy of Cocoa Programming for OS X (an essential text-book for people who want to learn Cocoa, as recommended by Hakan), a copy of the Objective-C Pocket Reference, Cocoa in a Nutshell, and The C Programming Language. I religiously read and work through 2 chapters of Cocoa Programming for OS X every weekday. I also take time to make notes and build daft applications to help me experiment.
At the end of the community consultation the Camino developers, and some assorted lurkers joined in our IRC conversation to discuss everything that people had suggested. We chatted for about 90 minutes and to be honest we cut out most of the suggestions as OFFTOPIC, or WONTFIX. A wiki page was created as as result and I now use that as a central location to keep focused, on topic information about my project available.
Mike and I begun to meet every Friday to discuss my progress, my concerns, his thoughts, his concerns. This was one of the first things that we agreed should happen so that we don't get to the end of the summer and I've done nothing.
I have grown to hate XCode with a passion - it drains life from me. It breaks all the time and sometimes it doesn't pay any attention to anything I try to tell it to do. I had the same experience with Eclipse. Give me vim and some command line tools any day of the week!
I had a bit of a rocky time during my first implementation week due to my exam results trickling out day by day and causing me some severe stress and lack of sleep. Thankfully Mike didn't roar at me for this but took the time to let me know that if I didn't let him know about these things then there wasn't much he could do to help me.
This week has been much more productive, I posted some images earlier on showing my progress and I am planning to have something in BugZilla by Thursday night, Friday night at the latest.
As I wrote this post I recieved an e-mail from LH at Google informing all SoC students:
... if your mentor does not feel you've madeI'm hoping that this is not going to be a problem, but I will be working double-time to make sure that I get my patches submitted to BugZilla before 26th June. I'm not going to ask Mike directly about what he is going to write because as it says on the Student FAQ:
sufficient progress on your project, you will be dropped from the
program and no further payments will be issued to you.
Mentors evaluations of students will be reviewed by Google's program administrators, but won't be released to students unless requested by the mentoring organization's administrator(s). Students reviews of mentors will be shared with Google's program administrators and with the mentoring organization's administrator(s), but not with the student's mentor unless requested by the student. In the case where the mentoring organization's administrator and the mentor are one and the same, the student evaluation will be shared with the mentor. In some cases, Google's program administrators may need to share the results of the evaluations with the student and/or the mentor to arbitrate when payment should not be made; should this need arise, all parties will be notified in advance.Mike has never said to me that I need to work harder, so I reckon that as long as I reach my first milestone I stand a good chance of being kept on.
As a result of this e-mail from LH, the importance of me getting my patches submitted to BugZilla by the weekend have just increased ten-fold.
I suppose I should talk about the Google side of things now. I have still not received my first $500 pay cheque. It looked like we would be getting O'Reilly Safari Bookshelf accounts but nothing has come of that. Oh, I got a free leather notebook from Google...
Things that I need to do ASAP:
- Submit my proof of enrollment to Google
- Submit my academic transcript to Google
- Fill in the abstract for my project
- Get my patches into BugZilla by Friday
- Buy some new trainers
Some implementation images (at last I hear Mike say!)
Less tabs than the width of the tab bar
More tabs than the width of the tab bar
This is what happens when you resize Camino
You will be using the buttons at either side to direct the tab bar to the tab you want to be at. I plan to implement scroll all the way if you double-click a scroll button.
When you resize the Camino window these scroll buttons appear and disappear automatically.
Obviously we will need somebody like Jasper to make this look as beautiful as we all expect from OS X applications.
I need to get back to work on making the tab bar scroll in a more elegant manner because it is really ugly at the moment! I have until Friday to get his done because my Mentor needs to start filing a report that is due on 30th June.
Just wanted to share these screenshots with everybody :)
Edit: I made some implementation changes based on feedback from Camino developers.
AppKiDo
This is an essential tool for any Cocoa developer and since I use it all the time I thought that I should link to the site.