Yesterday the USCIS returned receipt of my H-1B petition, so I gave my official notice. This is my final week at Yahoo!. On Monday I start an exciting journey with Asana. They're working on task management, which is the boring part. The exciting parts are the people, the tech and the culture. I had been talking with them since long before the Yahoo! acquisition closed, so it's great to finally see this through.
So why task management? Although I said that's the boring part, it's not entirely true. It's a crowded market, and the Asana co-founders come from building task management software at Google and Facebook. They know what they're doing, and they're getting amazing feedback. Remember how Gmail felt a bit like a desktop application when it launched in 2004? As the web has progressed, it no longer feels like it. Asana does. It's their Javascript framework which makes it much easier to implement zero friction web applications. One of the Meteor co-founders came from Asana.There are so many more reasons I'm beyond excitement to join them. The last time I remember being this excited was weirdly enough restarting my masters project after my initial supervisor resigned. The people are amazing. Did I mention they were co-founded by Facebook co-founder Dustin Moskovitz? He was the first person I met there. He convinced me to interview. Their tech is amazing. I already mentioned the Luna framework. Read all the other stuff we get to play with here. And their culture? They work really hard on finding the right fit when interviewing candidates. I believe that's why they put in so much effort to get me to join. I believe that leads to a very tight group who work together amazingly well. It's hard to convey what this culture means. I just feel it every time I go there. I haven't come across a more perfect fit. That's huge for me. A few things I could touch on is how transparent they are (see their Quora answers), how much they care about their employees (a different type of caring to the Google's and Facebook's), and how they encourage people to get involved in all aspects of the business they show an interest in.
Perhaps the most import reason for me though, is that it's a far more suitable career choice that I expect will prepare me much better to found my own startup. It's also I place I can see myself staying long enough to get a green card to leave open the option of starting up here if I so decide. It complements my Loki experience. That was with a small, young, inexperienced team. They relied on me for many things. Some things which I wouldn't dare put in my hands. We were just too small. I loved it that way. We didn't really grow much though. With Asana, I'll be working with people who have founded startups before, most of them have 10+ years experience, and they're on a solid trajectory so it's a risky but less risky shot at crazy growth one expects from a startup. They're also in it for the long haul, which means no acquisition.
Yahoo! was fun. It was eye opening. It changed my perception on looking at so-called dying brands from the outside. Anyone who says Yahoo! is dying is ignorant. Look at their earnings reports. Look at their stock price since Marissa took over. She has also shown how one person can turn a company around from within. Frequently the topic of conversation would be how shit it was before, how the people who stuck it through and are still there are the true believers. The people who work there are great too. My antispam team could easily be transplanted into Google or Facebook. They'd probably do a better job.
It is terribly difficult saying goodbye. It was no easy decision, and I will never really know if it is the right one. Heck, is there even a right one? Whatever could have been at Yahoo!, I am thrilled, super excited, hell I can't describe it in this blog post how much I can't wait to get started at Asana. I looked into well over fifty companies, spoke to a couple dozen and interviewed at about a dozen (or more, definitely more if you include acquisition interviews). I sought something super special, and I found it! It's been forever. I first met Dustin in February. It's good to wrap this up and get this out there.
Tuesday, July 2, 2013
Leaving Yahoo! for Asana
Sunday, September 30, 2012
Torn between Cape Town and SF Bay Area
The only job I have ever worked in South Africa was as a packer for Woolworths for a few weeks in high school. I have taken all the opportunities I can to combine work with travel. In the past, that was for internships. A year ago I moved to the San Francisco Bay Area "permanently". Sometimes I'm asked "why?" but more frequently I am asked when I'm moving back and why would I move back.
I came here to work for Facebook, a position one simply cannot find in South Africa. I have since moved to mobile gaming startup Loki Studios. I am learning so much. Just yesterday I was at a growth hacks conference, where I learned a huge amount about customer acquisition, a topic I doubt I would have picked up had I stayed in Cape Town. I meet awesome people all the time. Just yesterday I met a couple guys, including the CTO, of Scalr and we had amazing exchanges of stories about how they founded the company by having the project outsourced to them in Ukraine and how they want to move everyone here. I love my job. I get to work on so many different projects, working very closely with everyone in the team, learning about things I would otherwise not have dug into, but which will probably be very useful down the line. I have some great friends here. The weather is great. The beer is fantastic. I get to travel to so many exciting places nearby, although I haven't done much there yet.
So then, would I move back to Cape Town? Absolutely! I feel I am in the interesting position, where the benefits of being here and in Cape Town are roughly equal. I have quite openly stated that I want to start a startup some time soon. The local startup atmosphere and move to Loki have accelerated that plan. So I've been talking to lots of people about where I would do it. My thinking right now is that when I feel it's time to start up, I'm going to head back to Cape Town.
The way I see it, Cape Town is a pretty great place to start a startup. At least, for me. That last part's crucial. Living expenses are in Rands, while revenue is still in USD. The startup community has reached the point where you're no longer lonely. My friends and family are there (nothing against my friends here, but I've known my SA friends way longer). I don't have to worry about US immigration. Possibly the biggest factor though: I have a large network of excellent software engineers there, I'm known and trusted far more there. I know far more people in Cape Town that both I would want to work with them and they would want to work with me. The friends / friends-of-friends hiring seems crucial to early success.
Those are the biggest factors. What about funding though? It's terrible in South Africa. Lately I've been discussing ways of dealing with the problem. Local seed funding would be great, but there's not much going around so one can't rely on it. I would far prefer to be in a position (idea dependent) where I can bootstrap, at least to begin with. I'm learning of various ways to keep the option open to get funded by US investors. It seems they really want the business operations to be run in their neighborhood. That doesn't include the engineering effort though. So it might make sense to move that back here. Problem is I've heard of a couple experiences where that has turned the company from tech-driven to business-driven, which I'm not happy about. So I'm still thinking there. I've also been hearing of ways to get an L1 visa after a year, and various other possible solutions around the immigration problem if you start outside the US.
So the way things are looking, that packing job might be the only ever job I take in South Africa.
Tuesday, April 24, 2012
Cape Town Tech Communities
For the past 8 years I've been doing all sorts helping the Cape Town tech community in many ways. Lately, I've been using my experience and connections to help spur some life and energy into existing communities, getting them to do stuff. It can feel like talking to a brick wall at times, but the times when it results in new activity or reigniting an old group make it so worth it.
Ubuntu-ZA mailing list and Facebook Group
Stellenbosch University Linux User Group
Stellenbosch University Mac User Group
Stellenbosch University Network User Group
NodeCPT (Google Group)
PloneSA
Cape Town Joomla! User Group
Drupal South Africa Community
#hackSTB (demos of what people have built in Stellenbosch)
UCT Developer Society (#breaktherules, #talkwithbeer, etc.; targeting students)
codebridge (host networking events, talks, etc.)
Maties Computing Club
Monday, May 31, 2010
Long Overdue Update
It's been a long 10 months since my last post, so an update is long overdue. So, what have I been up to all this time?
I've been actively growing our still relatively new UCT Algorithm Circle. We had our 2nd Python course with 75 kids at UCT, and about 15 each in Stellenbosch and Johannesburg. We've put together a solid funding proposal to Google, which if successful will allow us to teach 1,000 kids in Cape Town, Stellenbosch, Johannesburg and Durban as well as attempting to motivate and assist students in these regions to form their own courses.
I've obviously been working towards my MSc in Computer Science. The idea to finish within a year didn't quite work out. Turns out the area I'm working in is ridiculously competitive, so we've been getting harsh paper reviews (not to mention the two immediate rejections without review!). This has resulted in things taking longer than expected, and along with that I've lost a lot of motivation. I'm still touching up the final results and then need to churn through the thesis. I have about 75 pages already, but a lot of it needs to be reworked.
On Wednesday, I leave the country for four months. I'm starting a second internship at Google Zurich, working with my previous mentor this time on the Google Calendar backend. I have a vague idea of what I'll be working on there and I must say it excites me a lot! Once again it's going to involve some stats, which I really enjoy since it often means dealing with insane quantities of data.
Unfortunately I'll be missing the soccer, but hey what would you rather be doing? :P I'll make an effort to head across to Italy to watch some of their games with family there. My roommate so happens to be a Swiss rugby fan, which must be extremely rare. So I'll get to watch the Tri Nations with him.
While I'm up there, I'm going to attempt to finish off as much as my thesis as possible. It will be tricky not having physical meetings with my supervisor, but Skype will have to do. I'm also going to be meeting with my potential PhD supervisors while I'm up there. It's either PhD or work followed by PhD for me -- I haven't quite decided yet.
So that's a very brief update on what's been happening the past 10 months. I plan to be a bit more active here while at Google, to at least keep my friends updated with what I'm doing over there.
Sunday, August 2, 2009
Introduction to Programming Using Python
Just under a month ago I tossed the idea around of running a Saturday course to teach high school kids some programming. The idea was to take the new batch from the UCT Maths Circle and give them some exposure to programming and introduce the keen ones to our UCT Algorithm Circle. Back then I had no idea it would turn into this:
When I realised the number of new kids coming from the UCT Maths Circle might be too small, I decided to open it up for application from anyone with limited or no programming experience. All we asked for was a 100 word motivation of why they should be invited and an optional recommendation from a teacher to strengthen their application. I approached the Computer Olympiad office for a list of email addresses and postal addresses of the schools that had entered the Computer Olympiad before. We emailed about 90 schools and posted to about 60 schools with no idea of what to expect.
The advertising was sent through during the school holidays, so nothing really happened for some time. When schools started on Tuesday 28 July though, they started coming in slowly and some of the applications looked very promising. It was around this time that I started thinking of how many we could accept: I settled on 30 and asked 3 other students to help lecture/tutor. By the end of the first week of school though, applications had started flying in like mad. By the end of Monday we had received about 60 applications and they were still coming in. If we stuck at accepting 30 we would have had a shit time turning away some strong applications. Rob to the rescue as we got a fourth lecturer which allowed me to increase capacity to 40. More kept rolling in, including one application arriving on the morning of the course!
We eventually ended up inviting 46, with the expectation that at least 5 wouldn't pitch. We underestimated their enthusiasm: one fell ill, another had a last minute commitment; everyone else pitched! Even after the first day, only one kid fell ill and the rest all returned. Unfortunately a group of four girls had to leave early to catch a lift and another left as she was falling behind. Everyone else stuck it through the whole way. Not something I could possibly have expected! But it means we did something right, right? :)
We chose to run the whole course in the computer lab so that they could run short examples as we taught them things. It really worked well as we could immediately see if they were struggling on something and we never once lost them badly. We could get them to run bits of code to see for themselves what they did and then expand on how it worked.
Taking a step back a bit, on Thursday morning I got a bit of a scare. One of our lecturers had caught a bad dose of the flu, so I ran around trying to find a replacement. Fortunately some students lurking around in the Computer Science building at the time offered a hand and I split the load across three of them. I thank them all mightily for helping out at such short notice. They did a fantastic job, as did all the others that gave a helping hand. In the end it was myself and Michiel Baird doing all the admin work; the two of us, Ben Steenhuisen and Julian Kenwood doing the lecturing; then Jason Brownbridge, Bertus Labuschagne and his brother Phil and Kosie van der Merwe helped out with tutoring, answering the kids' questions; Brent Benade helped order pizza for everyone, a rather nasty job.
When the kids started arriving there was quite a lot of tension in the air, which was to be expected. We planned for this and tried to make sure that we had at least two from each school, so that there was a good chance each kid knew someone else. A number of our lecturers and tutors are great at throwing humour around, which helped ease the tension really well. By the end of the first day (3 hours) most of them had opened up and had no problem asking for help.
The topics we taught, in the order we taught them:
- What is programming?
- Using the Python interpreter
- Input and output
- Variables, operators and basic data types
- Boolean expressions and conditionals
- While loop
- Lists
- For loop
- Strings
- Writing functions
They all did exceptionally well. Now it's time for them to write the test we gave them and we'll invite the best ones to attend weekly 90 minute classes to further teach them more on programming, especially focusing on improving their problem solving skills. What's great for them too is that they also have the opportunity of being invited to UCT Maths Circle, our partner in crime.
There is one thing we feel exceptionally guilty about. We received over 80 applications, but only had space for 46. Reading each and every one of those motivations of the kids we had to turn away makes me feel very sad. Therefore there is the possibility of us running another course like this in the near future. If you are interested in attending a future course, please contact me. We also run another class on data structures and algorithms for those who have a strong grasp of programming, are bored in class and want a challenge.
Sunday, February 1, 2009
UCT Algorithm Circle
After much grinding away, we had our first class of the UCT Algorithm Circle this past Thursday. We invited 32 of the most talented school kids we could find in the Cape Town area and invited them to some training. We're also slowly inviting kids outside of Cape Town to train online. We're teaching them from the very basics of programming right through to the advanced algorithms and data structures required for the IOI.
For the first class, we introduced the basics of Python. We were amazed at how quickly the kids caught on. After a 20 minute lecture and 60 minute practical session they were understanding operations, variables, stdio and more. The majority of these kids are in grades 9 and 10, and amazingly half are girls.
If things continue at the rate they're going now, this could provide a serious boost to our IOI results in upcoming years. We've always been welcome to the idea of training a wider audience, but finding the talented kids and getting them interested has always been a brick wall we couldn't knock down. This time though, collaboration with one of the people involved in the teaching kids for the IMO has seriously helped change all that.
To see the kids we have, just check out some of their introductions in this thread to see what they're capable of.
Prototype
After completing the meat of my background chapter in December, I spent the most part of January working on a prototype for my masters project. So now I get to start showing off all my pretty pictures. :)
First of all, I should mention that I am writing an extension for VMD, so I most certainly did not develop what you see below from the ground up. In an effort to simplify the process of porting my work to other molecular visualisation applications (e.g. PyMol), I decided to do all the core computation in an application-independent C++ module which communicates with an application-specific plugin via sockets. For VMD, this plugin is written in Tcl, which I have come to hate.
When you first launch VMD, you get a simple protein. Launch my extension and it churns away, calculating conservation scores (dummy values for now) and the solvent accessible surface of the protein. The protein is then coloured based on the conservation scores, which you can see below for a sample protein.
After visualising the conservation scores, the final application will visualise its prediction of binding sites. The user will then be given the option of doing further analysis of the binding sites. We're currently considering two forms of analysis: select a residue and predict what a binding site containining this residue would look like; and select some residues and predict what the binding sites would look like if we excluded these residues from the predicted binding sites. Below is a sample of user-selected residues (in red).
Then the user can choose to visualise the solvent accessible surface. We calculate this surface using marching tetrahedra to extract an isosurface and kd-trees to calculate the isovalues. The surface is coloured by the conservation scores, just like in the previous shots. Currently I don't have residue selection working in this mode, although I plan on doing so. The meat of my computation will be using the conservation scores and the solvent accessible surface to predict the binding sites.
Then finally, VMD is a very feature-full tool and least of which you can do is rotate the protein for a view of the entire protein as you can see below. There is much more you can do with it, but I'll leave interested readers to explore themselves.
Next week I'm off to the Afrigraph Conference in Pretoria, after which I have to attend this 6 week bioinformatics course in Stellenbosch. Lectures 09:00-18:00 every day for 6 weeks. Not sure how I'm going to last.
Thursday, December 11, 2008
Planning for PhD
After the painful experience of seeing my masters supervisor resign a few months ago, things have been turning out rather nicely. A huge advantage of working with my new supervisor is that she has good international collaboration. Last month I met the lead developer (from Illinois) of VMD, one of the visualisation programs I'll be writing my masters project for. This week it got even better!
This week, Dr Robert Best is visiting from Cambridge. It is looking increasingly more likely as time passes that he will be my PhD supervisor. Yes, that is correct...I am this close to getting the amazing opportunity of studying my PhD at Cambridge! The only hurdle at the moment is funding. I've been very slowly releasing news of this, as I first got word of the possibility around the time I started my new masters project a couple months ago. This is entirely thanks to my masters supervisor, Michelle Kuttel, who put me in contact with Dr Best.
Yesterday I met him for the first time, and we discussed potential research topics. The deadline for applications is due very soon, so for the moment we're focussing on a particular topic that looks very promising. Summarising very crudely, it's about taking advantage of both the speed of coarse-grained simulations and the accuracy of fine-grained simulations to produce fast, but accurate simulations of biomolecules. The main question here is how to swap between different representations of the system. Another possibility we have been looking into is furthering his research in reaction coordinates, which he summarises on his website.
By the way, this is the reason I am trying to finish my masters in a year. The year starts in October at Cambridge, and starting when their year begins makes things much simpler.
Thursday, November 13, 2008
Proposal Presentation
My proposal presentation went really well today. I was concerned that the biology jargon would get in the way of the meat of the project, but we got past that. Edwin is my second reader and he provided some very useful criticism. Main thing I'm glad about is he suggested we remove the user testing aspect, which was always my least favourite. He also picked up a few bits of jargon we need to describe better come the thesis, but nothing major. The last thing he picked on was a concern I raised with Alex (my co-supervisor) previously anyway, which means I'll be paying more attention to it.
So on from here we go. Next step is to continue with the background reading and starting of the background chapter. The plan is to wrap up with the bulk of the background reading by the end of this year and then dig deep into the project. I have a tight schedule as I plan to finish up by October next year. I've had very contradictory reactions to this, some saying it's quite doable, others laughing it off. We'll see.
Tuesday, November 11, 2008
Masters Milestone #1: Proposal
If official milestones were all that counted, I'd be about to exceed progress of the project I previously spent six months on within the first six weeks of my new project. My proposal is all written up, gone through the shredding of two wild supervisors and I'm ready to present it to the department this Wednesday. Woohoo!!
It's insane thinking how fast things can move when everything just works. From the way things ran in my last project to this now, wow how things can change over such a short period of time. I have to thank my supervisors Michelle and Alex, they've really provided great support.
So anyway, Wednesday 13:00 in CS303. My title is "Development and Validation of a Visualization Tool for Predicting Protein-Protein Interfaces". If you're interested in scientific applications of Computer Science, this is a good example. It also involves quite a bit of computer graphics.
Friday, October 31, 2008
Juniors in the South African Computer Olympiad
A concern I have always had with the South African Computer Olympiad (SACO) is the lack of juniors (grades 10 and below) making it through to the third round and eventually the International Olympiad in Informatics (IOI). A glance at the SACO winner archive makes this quite evident. The only person that has won a medal in grade 9 or below (and hence stood a chance of making the IOI) was the well-known Bruce Merry.
Why do we have this problem? The obvious problem is that IT is only offered from grade 10 and it's nearly impossible for someone to pick up enough within those first few months in time to make the final round of the SACO. However, it is quite common to get those who taught themselves programming in the earlier grades yet only make the final round in there last one or two years. Vastly different situation to the Maths camp, where grade 8s and 9s are a common occurence.
Today we made a giant step in improving the situation. It goes back to little over a year ago during the final round of last year's SACO. We had three juniors (grades 8-10) joining us on-site for a junior competition in which they couldn't win anything. One of these kids did so well on the first day we invited him to write the senior paper the following day. Unfortunately as he only had a single day's worth of points to stand on, it was near impossible for him to win a medal and a place in the IOI training squad.
This gave us reason to invite a larger number to participate in the training. Due to a strictly worded rule, only the medallists could compete for a place in the IOI. Along with this and our limited budget we had to place several restrictions on those outside the top six, but we invited the next six best non-matrics to attend the training camps of which five accepted the offer. Things ran very well as the larger squad resulted in more discussion as well as pushed the top guys to perform better. Yet still, there was this lack of competition amongst those we called the squad++ as they had nothing to aim for but goals they set themselves.
For this year's final round the rule in questioned was worded more openly. The final round this year was the most competative from recent years and yet we still ended up with a new grade 9 and new grade 10 just missing the medal positions! It's been a long month, but today they were finally accepted into our first ever larger-than-usual squad. We now have ten highly competative kids in our squad, with the distribution being three grade 12, five grade 11, one grade 10 and one grade 9. All are elegbile to make the IOI team next year, and should Charl who's the one in grade 9 make the team he will be our youngest team member after Bruce! Now that they've shown us what they can do it's up to us to train them and make sure we continue to work on the great results.
I have some other plans to further increase the junior numbers. Now that we have these guys as role models it will be easier to catch the attention of other juniors and I don't plan on missing this opportunity. I already have the names of some current very capable grade 8s and 9s wanting to take a shot at the SACO next year. It's going to be a fun and interesting year to come!
Sunday, October 12, 2008
ACM ICPC South African 2008
Yesterday UCT hosted 22 teams from UCT, Stellenbosch and UWC for the ACM International Collegiate Programming Contest. This year we had three new helpers from this years World Finals team that can no longer compete. We did a lot of preparation on our side for the event, but as we had the SACO just two weeks ago we didn't contribute any problems.
The contestants started arriving from 07:30 for a large breakfast we prepared for them. They thoroughly enjoyed all the food and chowed it far quicker than we could've imagined! Thanks to Chris Parker and Bertus Labuschagne for preparing the breakfast and snacks during the contest.
While the contestants ate and I handled registrations, Ian Tunbridge was in charge of preparing the lab with the team flags and balloons. For the first time we decided to blow up all the balloons in advance. Given the number of problems solved last year this seemed like a good idea, but alas as you'll find out soon enough it was not.
At 08:30 we started moving the contestants down to the lab, let them login and waited for the practice contest to start. After the practice contest the Nigerian server went offline due to power cuts, which pushed the start 45 minutes late. The start wasn't as pretty as we had hoped for, but things finally got underway at around 09:45. It took some time for the first problem to be solved, so I had plenty time to catch a before shot:
We put together a large team of UCT students no longer eligible to compete. We had Timothy, Migael, Tamara, Harry, James, Robert, myself and for a brief period Ian. Our first goal was to check the problems and send in any clarification requests early, our second goal was to beat Bruce who was doing them solo. Unfortunately we failed at our second goal, but then again Bruce cheated. :P We got A, B and D within little over an hour. We then got stuck for quite some time trying to match what was actually expected in F but got it eventually. Harry was working on C, but very quickly hit a dead-end as he was getting wrong answer. We asked numerous clarification requests and submitted countless times before finally getting it correct. We tried too hard on E, realising too late that a brute force solution would work in time (Bruce beat us to it and solved all six!).
This was our team near the beginning, minus me who took the photo:
More than an hour into the competition, ʇlnɐɟƃ3s got the first problem at the UCT site:
Things never really took off for the full five hours. The number of problems solved was very low with only 14 of about 70 teams solving anything at all, only two of them solving more than two problems. Going into the last hour Tuks3 were leading on time and the scoreboard stopped updating. This is when the local teams started pulling away, with team ʇlnɐɟƃ3s solving a third, followed shortly by Code Red from Stellenbosch also solving a third. At this point both teams were extremely close on time, but UCT's ʇlnɐɟƃ3s was just ahead.
It was in the last 15 minutes that ʇlnɐɟƃ3s closed the door on everyone else by solving their fourth and final problem. No-one was able to pass them in the final minutes. The end results were:
- ʇlnɐɟƃ3s of UCT (Keegan Carruthers-Smith, Max Rabkin, Saadiq Moolla)
- Code Red of Stellenbosch (Ralf Kistner, Dirk-B Coetzee, Petrus Theron)
- Tuks3 of Pretoria
- Team LOL of UCT (Julian Kenwood, Richard Baxter, Mike Talbot)
- OMG Raptors of UKZN
After the contest we went to Primi Piatti in Cavendish for lunch. Unfortunately before we could go we needed to clean up the mess the contestants left behind. Yes messy bunch...Once the lab was all cleared up we headed off and were just about the last to arrive.
After lunch, which was staggered by table for some reason (the kitchen couldn't handle the numbers or something) we had a little awards ceremony.
Thursday, October 9, 2008
Renewed Masters
It's been two months now since I heard the news that would result in drastic changes in my life. I never realised just how bad the news was that day. It took some time to sink in. When it did, however, that was the start of a very stressful period for me. I'm talking about the day my supervisor resigned.
There's a lot of details behind what happened, but for personal and ethical reasons I have chosen not to comment about it much online. It is for the same reason I have held off posting about what has been happening until now. Now that things are settling down it's time to start coming out with the news though. Many of my friends have known about this for a while now, it's just time I announce it publically.
So my supervisor resigned. Within a couple days I started talking around and within a week I was discussing the possibility of a new project. Ironically the first person I spoke to, Michelle Kuttel, is now my new supervisor. The main reason for the change of topic is that no-one else at UCT was strongly grounded in the field of my existing project. While it meant essentially writing off six months of hard work, I had to consider my long-term goals. It sucks, it really really sucks...but I don't regret making the decision, not yet. It's been a long, stressful ordeal, but I feel I've made a good decision.
My new project is in bioinformatics and is on protein-protein interface prediction. It's a graphics-heavy project with the new field of computational biology to learn. It's a drastic change from my previous project, but I have reasons for doing so. The plan is to get down to serious work quickly and get wrap up end of September 2009. It's a very quick masters, but after the huge setback I'm seriously determined to get this done and with my supervisor believing it's possible I will get it done.
Apologies for keeping this so brief, but I don't want to say too much publically about this. You'll be hearing more about my new topic though, no reason to keep that quiet! I plan on putting together my proposal by the beginning on next month and giving my proposal presentation a week or so after.
Thursday, October 2, 2008
South African Computer Olympiad 3rd Round 2008
The final round of the South African Computer Olympiad took place this past weekend. This was the first year it's been run since Bruce and Carl left UCT at the end of last year. While we sorely missed them and noticed how much we had previously taken for granted, we managed really well.
There were 16 contestants, 7 of which had gone through squad training over the past year so we had a nice split between newcomers and oldies. Two months ago I setup a Google Group for them to ask questions and discuss the 3rd round. Given the large number of oldies this turned into an exceptionally useful discussion forum with the oldies asking advanced questions which in turn gave the newcomers a target to aim for. They could see what was out there and it really boosted their urge to learn. Over the past two months there have been nearly 400 messages posted!
The contestants all arrived on Friday evening, when we had an introduction session and went through the rules and environment. This was followed by the classical pizza-on-campus supper. After having helped most of them through the forum I was anxious to meet the new guys, but the swarm of unrecognisable faces threw me off guard, especially as we were running around frantically sorting out a couple last minute things. Fortunately I was able to get to know most of them over the weekend.
On Saturday morning we started them off with a practice session so they could become familiar with the environment. One advantage of having the forum was that we also for the first time got them all to use the handing system before arriving, even going as far as providing a time-constrained practice contest for them. This meant that most of the time was spent getting familiar with the setup of the PC's, which wasn't much to get used to and so they got bored very quickly (bored for these guys means they were coding up quite advanced algorithms we have never taught them). The only issue we had was with Dev-CPP setting folders to read-only and saying it couldn't save, which we eventually fixed.
While they went off for lunch, we setup the lab for the start of the first round of competition. A first for this year again is that we logged them in and pre-loaded all the IDE's and such (the network is so slow we have scripts that copy everything onto the local disk), which took more time than we had anticipated so most of us got cold food. We're supposed to have an admin account that can wipe their accounts clean, but the network admins messed that up and it's one of few things we forgot to test beforehand. This meant we had to wipe the accounts manually.
The first round of competition started well. We had given them two easier problems and a challenging graph theory problem. Our goal was to get them a good starting score and letting them have sufficient time to have a real crack at the nastiest problem of the weekend. The plan worked well, besides us underestimating the difficult of the second problem. The scores were very high, with the average for this single day higher than the average over both days last year. While the problems were slightly easier this year, the major reason for the difference was the much stronger contestants. We were seeing the results of a larger training squad over the past year combined with the amazingly fruitful forum.
There was one single issue we've had haunting us for about six months now, but which has affected us very little prior to this weekend. One of our grading servers keeps on crashing, and we only recently discovered that a CPU error is resulting in a kernel panic. Alongside this the hard drives our only other grading server were stolen (long story!) and with everything else we were working on we never got around to finding new drives and reinstalling in time (we got close though!). With the introduction of detailed feedback and grouped test data increasing the load on the grading server it starting crashing a lot more frequently, to the point where we had to be careful and coax it along, rebooting it a number of times. Being South Africans we quickly improvised, using a red packet of sweets to indicate the server was down and a green packet when it was up.
Once the first round of competition was over we started a problem discussion lead by the problem authors. We describe the expected solutions, which is a great learning experience for the contestants. While that was going on we started the evaluation of the day's submissions. Unfortunately the grading server really started freaking out under the load we were putting it under. Combined with many more test cases than we previously used due to grouped test data, the evaluation took over two hours! When we finally got the marks to the contestants they were mostly all very happy with the higher-than-usual marks.
We then went out for supper to the Spur where I had a very chatty group at my table. It's always wonderful have conversations with them about their experiences in school and in the competition. It's the best way to discover what areas need improving and potential solutions to them. It's amazing hearing stories of how students at schools without Computer Studies quite randomly happen to come across the SACO, and also quite sad to think of all those who miss out.
Sunday morning was an early one for us as we had to prepare for a 09:00 start. While the problems were busy printing Keegan and I moved the grading server closer to the aircon in the hope that it would reduce the frequency of crashes. We then went down to the lab to log everyone on, clean the accounts and do some other stuff to make the contestants' lives easier. We started a few minutes late again, but it went very well from there on. We had very few crashes of the grading server, helped in part by further decreasing the load we put on it. So it was a much more peaceful day for us coaches (this just half of us):
The problems for the second round of competition were considerably harder and we noticed the effect from early on. The easiest problem was very easy to get a wrong answer on as it looked like greedy was correct. Fortunately most of them quickly moved onto the other two problems, one a competitive data problem and the other a quite challenging greedy problem with a 70% Dynamic Programming solution. The race for first place was extremely tight up until the last half hour when the eventual winner zoomed ahead. It's always fascinating watching the rush of submissions coming in at the end, which can sometimes shuffle things up quite significantly.
Evaluation of the second day was much, much faster due to several reasons. This meant that we had the results ready and printed immediately after lunch. The contestants were very anxious to see their results and as much as we try keep them from discussing them within a few minutes nearly everyone knew who had come where. The medal winners were:
The final Python prize of R10,000 went to Gwylim Ashley. The results were extremely strong this year and the competition very tight. Just looking at how this years IOI contestants Robert and Schalk-Willem were beaten by others shows how hard everyone worked for this competition. The results were also nicely separated with no positions at the top very tight, and the scores at the lower end weren't dismally low as they have often been in the past (another sign of how strong the competition was!)
Some random statistics about the medallists: Kosie is the only one not wearing glasses. Four are Afrikaans-speaking (reading Afrikaans code isn't fun, fortunately only Francois does this!). Half are in grade 11 and can return next year, including Francois. Robert and Schalk-Willem participated in the IOI this year, and Haroon was invited but withdrew. Besides Michiel, all made the final round last year.
Rondebosch Boys' High School has had a strong performance in the SACO over the past years. Being the first Bosch boy to make the final round and leading the Scientific Committee, this makes me extremely proud. This year the boys didn't disappoint, grabbing 2nd and 4th places as well as one non-medallist position. Here's me with the Bosch contestants (Haroon, Robert, me, Roland):
The Western Cape as a whole has also produced the largest number of final round participants in recent years. This year we trumped big time though, with 10 of the 16 contestants. Of the rest, three were from Gauteng, one from the North West and one from Namibia. Why not share that fabulous Western Cape photo then? One of the Cape contestants is missing from this photo.
And while I'm at it I might as well give the lonely out-of-towners some love and care :)
Left to right: Divan, Heinrich, Graham, Bennie, Sheldon, Michiel, Kosie, Haroon, Gwylim, Francois, James, Roland, Charl, Schalk-Willem, Robert
After the photo session they had an opportunity to check on their results and raise any appeals. Fortunately we had none, which is always a great sign and a relief. Once that was over we could rest in peace knowing that the five weeks of hard work we put into the problems yielded no problems besides two minor clarification requests.
Very quickly the attention switched to Open Arena, yes they start earlier every year! Some day we need to start a new game, this is getting boring Ben. Graham also tried working on a visualisation tool for the data problem, but when I saw him trying I quickly told him us coaches already had one and I showed it to them. After there hour of fun we had pizza and watched some Fawlty Towers and Thin Blue Line.
Monday was their last day. It was supposed to begin with a tour of the Center for High Performance Computing, but due to the political situation in the country and the resignation of the Minister of Science this was cancelled at the last minute. We couldn't find anything to replace it in time so they had a late morning and arrived on campus at 12:30 when I took them for some campus food. It was another opportunity to have some good discussion time with them.
At 14:00 they had an hour with Michelle Kuttel, student advisor at UCT. She went through the Computer Science streams and courses at UCT as well as touching on a few other areas. I then took them over to the Robotics Lab where one of the engineers gave them a tour of the lab. The tour of UCT ended with a visit to the Virtual Reality Room where they were shown some demo's of current and past masters/phd projects.
At the end of it all it started raining and they needed a lift down to the bed and breakfast. Fortunately two of the other coaches were available to help with lifts, but the rain proved an interesting challenge: how to get 13 people down to the B&B using three cars parked in different parking lots while getting the least wet. After getting them all down there to prepare for the awards ceremony, we had to get them all to Kelvin Grove. Fortunately we were just able to squeeze in a single trip there as opposed to the planned double trip.
It was the first time I had been to Kelvin Grove and I was very pleased with it. I was also very happy to see my old headmaster from school attend the awards ceremony for the first time. This was the first time I can even remember talking to him. He was most impressed with the continuous success of Rondebosch at the SACO. Prof John Webb was also a surprise to see, he heads the Mathematics Olympiad. I also got the opportunity to meet Bennie and Michiel's parents, two of the top newcomers. There were many other people I met, but to list them would be silly as I'd miss out on so many.
The awards ceremony was very formal as usual, with guest speakers from Standard Bank and Microsoft. Fortunately they weren't all that boring, but one or two did drag on a bit long. When we finally got around to the announcement of the results it all flew by so quickly. It was great hearing such positive feedback from the contestants and their parents. Before I knew it, it was over and people had started leaving. I even missed out on the now mandatory official Rondebosch photo.
And that's the end of the beginning. Yes, now we just need to select the training squad (medallists are already guaranteed a place in the squad, but we're hoping we can invite more). We then put them through a rigorous training process which we use to select four of them for the International Olympiad in Informatics to be held in Bulgaria in August 2009. I look forward to the year ahead of working with this great bunch!
Huge thanks to the other members of the Scientific Committee who helped make this one of the smoothest SACO 3rd rounds I think we've ever run. Max helped out a lot with the general admin as well as setting a problem. Keegan took on a lot of the technical work, as well as taking over Harry's problem. Ben organised the junior contest, with some help mostly from Timothy, Julian and Richard. Richard was great at proof-reading the problems and being very nit-picky about them. Migael took on the mission of setting the data problem and helped out a lot over the weekend. Harry in setting his lovely problem, but forcing me to rewrite the problem text. Mark, the new addition to the group helped me set the easy problem. Nicholas, Bruce and Carl also helped out a lot with checking the problems and all of them are far away so they all helped out online only. Tamara was also the first beta tester we've had, a new idea picked up from the IOI. Michelle and Peter helped with some last minute proof-reading. I hope I never missed out on anyone. :)
Wednesday, September 10, 2008
South African Computer Olympiad Online Contest
Back by popular demand! :-P For the second time we will be running an online version of the South African Computer Olympiad and we would like to invite anyone who is interested to take part. The SACO is an IOI-style contest run over two days. The contest will run
Saturday 27 September at 13:30 to 18:30 SAST (11:30 to 16:30 GMT)
Sunday 28 September at 10:00 to 15:00 SAST (08:00 to 13:00 GMT)
We will also run a Future Stars division which will consist of easier problems targeted at, but not limited to, juniors. For an idea of the difficulty level of this division see the problems from last year at http://olympiad.cs.uct.ac.za/old/saco2007/
Register now at https://olympiad.cs.uct.ac.za/contests/saco-2008/?page=register (accounts from one of our previous contests should still work)
More information is available at http://olympiad.cs.uct.ac.za/online-contest.html
Looking forward to challenging you guys! ;-)
Thursday, August 28, 2008
IOI Day 5: Contest, Conference and VIP Dinner
As you will have seen from my previous posts the second round of competition took place on Wednesday. Well, actually it is all over now and I am back home in South Africa. Things just got too hectic and sleep became a higher priority than blogging. I'll be going back and blogging about what happened for the last few days.
Day 5 started with the second and final round of competition, which from seeing the problems the night before I considered easier than those from the first round. Our guys went into this round still standing a fair chance given the low scores from round one. I was not to see them until it was all over though as us team leaders were in quarantine.
The day started with an early breakfast. I had my presentation to give at the IOI Conference and I wasn't going to be late. I was scheduled for 10:30, the second slot. I arrived early to get my presentation onto the laptop they were using, however, after much waiting no laptop arrived. They wouldn't let us use the main PC that was there as it was connected to the network so we had to wait for a laptop to come, which took a while. During this time I was told that the first speaker was busy in a meeting and so I was to go first. As if the nerves couldn't get any worse they finally brought the laptop and the first person to copy his slides was having difficulties, but luckily I was able to step in and resolve them.
Finally my presentation was underway. The paper I presented, titled "Challenges Running a Computer Olympiad in South Africa" is available here and my slides here. It went well and timing was spot-on 20 minutes. The questions that followed were most interesting, although I must admit I have forgotten most of them. Wolfgang was interested in the decline in numbers for the second round upon introducing the new first round format. A couple people were interested in what we did with promising results from the first round if the student had no access to a computer.
After the presentation, however, is when the real fun started. Several people approached me to discuss some of the points I had made. There were those just stunned at the difficulties we face back home and our novel approaches at tackling them. The Dutch who know us so well were even themselves surprised at how difficult our task was! One of the unsurprising interests was our experience with Python which a few others were testing out. There was even some interest in our efforts to get juniors involved.
Once the presentation was done I was far more relaxed, although we still had the contestants hacking away at the problems. I enjoyed the rest of the presentations and there were some great ones given, although there were also those that went bad, mainly by non-native English speakers -- got to give them a hand for trying though. One that especially caught my interest was Ben's paper on alternative training methods. After all the presentations it was announced that the 3rd IOI Conference will be held during the next IOI in Bulgaria. I later caught up with Valentina who runs the conference and she told me they're planning on setting the topic on how countries have progressed over the years.
When we got back to the rooms lunch was not yet ready for us, but I had a couple more discussions about my paper leading me to almost forget entirely about lunch! The contestants seemed to be taking longer to come back this time, but I eventually found our guys just after lunch. The general atmosphere wasn't that great and everyone was keeping to themselves which meant we had to wait for the results to come out. Before they could be released they had already found the computers and started Counter Strike, which proved contagious as several others joined.
When the results finally arrived (they were slow to place them in the pigeon holes again!) I rushed to collect them. Unfortunately the team weren't as anxious to see them as I was, understandable after seeing them. Mark, who had done well on day one did poorly this round while Saadiq was the one to clinch our one hope of success with a full score on linear gardens. All-in-all the problems proved a serious challenge to our team and they weren't expecting such a toughie. Hopefully the two that can return will learn from this experience.
Saadiq ended up with an ear infection and our team leader took him to get medical treatment. Apparently they brought an ambulance sirens blurting yet never even checked his ears! Fortunately his father is a doctor so since returning he's gone for a proper check-up. The Counter Strike returned and continued for many hours. At its peak I counted 12 on the provided computers and many more on laptops. This made getting a computer for Internet usage very difficult.
After a long discussion with some of the guys I'd met earlier in the week, we had our VIP Dinner to go to. It's not often people like us get to go to such an event. The team leaders and deputy leaders were given special invitations the night before and most people dressed in suits, however, with the weather we didn't come prepared for this so I went in the smartest I had, a shirt. I tried dragging Mohamed Taha of the HSC along. He was resistant as he was extremely tired, but I managed to convince him. Unfortunately the buses were packed, but he found a ride with Osama of the ISC. On the road to the dinner I had a discussion with the Macedonian leader who was inspired by my presentation and we exchanged experiences and both gained new ideas from one another.
When we arrived we were greeted by a most wonderful venue full of people dressed in suits, as you can see below. They even laid out the "red" carpet for us. The drinks they served were absolutely stunning, I loved the strawberry and guava! Soon after arriving the main guests arrived. There was the Minister of IT and Communications and the Minister of Education. For the locals it was a great honour to be able to host people of such stature. Just before leaving for the dinner I also heard that many ambassadors were attending the dinner. It turns out all the country's ambassadors had been invited, but unfortunately our's did not show up (it seems roughly half did!).
I wandered around outside a bit with the Macedonian leader before finding Taha and chatting more with him.
Finally when they were ready for us to take our seats we discovered we had been preassigned seats by country. Unfortunately that meant we had to split up and I ended up at a table with Singapore and Serbia. The Serbian ambassador and his wife were also at our table and somehow the two of them ended up sitting between Peter and I, so the Serbian team never really spoke with their ambassador. I had a great time talking with him about his experiences in Cairo, especially as a foreigner who'd lived there for 2.5 years. Strangely he prefers living in Egypt to Serbia, something I wasn't expecting.
The dinner started with several speeches, quite possibly more than any other event. Frankly I've heard enough propaganda from such speeches that I mostly ignored what was being said. The meal that followed was easily the best we had had that week. One good thing about having the ambassador next to me is that he warned me what not to eat, especially the lettuce. During the dinner we had what could end up being quite an historic moment for us in that Nigeria confirmed that they would be hosting the first African Olympiad in Informatics in Max/June 2009. They were that quick in contacting their government and organising the funds!
Once the desert was over we were, as usual, quickly scurried out of the venue. I found it very annoying when they did this, but I suppose it's their culture so it's normal to them. When we got back the guys were still at CS. In fact they ended up pulling right through till breakfast and then skipped the tour the next day in favour of sleep! I had some fun with Ricardo from Spain, Mile from Macedonia and for some time one of the contestants from Azerbaijan (apparently they do absolutely no training for the IOI!). Mile was trying to get us to enter the BOI which they're hosting in October, but it's too far for us and costs too high.
After having enough with the indoors we took a walk outside, something I hadn't done all week so I saw a couple new places. Just before our walk we were asked by one of the guides if we wanted McDonald's. Given that we were in Egypt and that it was one in the morning, we kindly rejected the offer. When we returned from our walk we noticed he had started getting quite the list of orders together. I will never forget him on the phone in the cheesy accent ordering a "Chicken Friday hello hello". Apparently Chicken Friday really is the name of a burger, while "hello" or however you spell it is "nice" in Arabic. Well he ended up taking a lot longer than any of us could have expected. He finally put the order through at three in the morning, which by that time he had convinced us to order a Mc Arabic. Just look at the order he has on his lap:
When he told me the order was going to take two hours to deliver I took it as a cue to go sleep. With such a large order there was bound to be someone who would take my burger, which I had actually planned on sharing with Ricardo anyway. The next morning I found out the order arrived at 04:30 and came to 1,500 Egyptian Pounds ($300)!
The next day was the final GA meeting followed by Dream Park World for the contestants and the Egyptian Museum for the team leaders, ending off with the awards ceremony.
Wednesday, August 20, 2008
IOI 2008 Solutions
UPDATE: PDF's of the solutions available here: http://people.ksp.sk/~misof/ioi08/
Here are photos of the official solutions for the IOI tasks of 2008. Anyone care to OCR them? :-P
Printing
Islands
Fish
Linear Garden
Teleporters
Pyramid Base