Archive for the ‘Technology’ Category

Interviewing for a Software Engineer position at Google

March 21, 2007 - 8:46 pm 2 Comments

About a year and a half ago (October 2005), I tentatively applied for a Software Engineer in Test position at Google. When, to my surprise, a recruiter actually emailed me moments later and scheduled my first interview, I panicked and dug out all my old Computer Science notes and textbooks from my 4 years at uni. I had read that Google’s interviews were tough, so I thought I had better get studying. Over the course of a few months, I stressed out heaps, reviewed all my old comp sci notes (really, who remembers how to implement B-Trees, A* Search algorithms and MergeSort after leaving university?) and had 5 hour-long hard-core technical phone interviews with software engineers and testers at Mountain View.

Anyway, although the recruiter I was dealing with told me I had done very well during my interviews and that everyone was very impressed, I was eventually given the bad news – there wasn’t really anything for me at that time. I was pretty gutted but glad that I had gone through it all for the experience – no interview from then on would ever be as difficult as the ones I’d just undergone.

How wrong was I? About a year later (December 2006), one of the recruiters I’d dealt with during my interviews emailed me and asked if there was any chance I could come in for an interview for the same position at their Zurich office while on my holiday in Europe. Apparently they were expanding their test team and thought of me :). Well, since I was going to be in the area anyway, I said sure. However, since I was going to be on a much anticipated holiday, study and stress were not an option. I just accepted the fact that this meant I was going to totally suck at any tricky technical interview questions – but I thought, what the hell, I might as well.

All I can say is: yikes. As you can probably guess, I didn’t get the job, AGAIN. But this time I felt I actually did quite well in the interviews, despite the lack of study. Google flew me (and Chris) down to Zurich from Copenhagen and put us up in a really flash hotel for a night. The following day I had a full day of interviews on-site at the Zurich office. Basically this translates to 5 hour-long interviews with 5 different software engineers and testers. The questions they asked were very technical and covered a lot of different technologies. Towards the end of the day I was totally knackered and found it really hard to think straight, whether in code or in plain old English. 5 hours of hard-core technical questions when you have only a few seconds to think up a good answer and write code on a white board is TOUGH, no matter how much of a geek you are. NOW I’m pretty sure I’ve experienced the toughest interviews I will ever have to.

Anyway, I guess the moral of all this is that if you are given an opportunity to try out for something you really want but are pretty sure you’re not going to get – give it a go anyway. Sure, it’s gonna be hard and you’re gonna stress about it. Sure you’re gonna feel pretty crap about it if it doesn’t work out. But you will gain SOMETHING from it – even if it’s just the experience. In my case, apart from being forced to review a whole bunch of pretty cool geeky stuff that I’d totally forgotten about, I got a cool trip to Zurich, paid for by Google, I got to meet a bunch of really fun and talented software engineers (who by the way took Chris and I out for a great Swiss-fondue dinner after my day of interviews in Zurich) and basically I feel pretty good about the fact that I even got the chance to interview with Google. And as I mentioned above, I am now confident enough to believe that I can sit through any technical interview known to man (or woman) :)

Send MSN messages programmatically

March 18, 2007 - 5:07 pm No Comments
I’m sure there is a need out there to send messages to MSN programmatically. So I’m gonna find out how plausible it is and whether I can find a use for it myself :)

I recently came across a simple PHP class for sending MSN messages called sendMsg written by FanaticLive. Below is a form that uses this class to send a message from the ‘sender’ to the ‘recipient’ that you enter.

In order for this process to work, the specified recipient must have the sender in their MSN contact list (approved or not) and the recipient must be online. If you don’t want to enter your email and password into this form (and I totally understand if you don’t) then try using the test user. Only thing is you’ll have to temporarily add the test user – msn.tester@mindtrip.co.nz – to your contact list on MSN.

So go on, try it… you know you want to :)

Now I have to come up with a cool idea for why I might actually want to programmatically send MSN messages… hmm….
Update: Looks like some cunning spammers have decided to use this form to send spam out, not that it’s working. So HA spammers, take that. I’ve logged all your IP addresses and the fact that none of your spam got through. Anyway, I’m not impressed, spammers suck. So thanks to them, I’m taking this form down. If anyone wants to see the code for it, just leave me a message and I’ll send it to you.

How to become a Web Volunteer

March 11, 2007 - 5:16 pm No Comments

About a year ago, I embarked on a project through an organization called InterConnection.

InterConnection, as its website says, works to make Internet technology accessible to underserved communities around the world. As a web designer and/or developer, you can become a “web volunteer” and help build sites for other organizations out there who need a site but don’t have the money or the know-how to build one themselves.

So this is what I did. I became a web volunteer. InterConnection assigned me a project – to build a site for Shauri Yako Community Youth Support Centre in Kenya. How excited was I?!? Kenya! Awesome! Apart from doing something which was going to help others a LOT, I was going to have to push my boundaries and come up with a design. Yikes.

Shauri Yako Community Youth Support Centre is a community based organization, based in Nyeri, Kenya. SYSC was created to provide developmental services for children and youth living in poverty in Nyeri. SYSC works with vulnerable children, youth and women who face poverty, HIV/AIDS pandemic or social isolation to address their needs and hopes.

Within a few days of being assigned this project, Joe from Shauri Yako got in touch with me and with InterConnection’s help, we set them up with some online hosting and I started on the designs. Now, me not having a creative bone in my body meant that it was, let’s say, somewhat difficult for me to come up with a nice design. It took me about… 26 designs(!!!) and many frustrating one-sided arguments with photoshop until both Joe and I were happy with it. Phew! What a mammoth effort that was!

I then embarked on actually building the site. I had received lots of word documents and requirements from Joe, so this part was pretty easy. APART from the fact that in order to challenge myself a little bit more, I had decided that I would build the whole thing with as little HTML as possible and as much CSS as I could come up with. This, however, didn’t sit well with many browsers and after many attempts and many hours cursing at IE, as well as the realisation that this site was actually meant to be as accessible as possible (read: cross-browser), I gave up and re-did the site in HTML tables. Urgh. But, it took probably no more than 1.5 hours. How frustrating.

Anyway, the site has now been up and running for a few months and apart from a few last bits and pieces to tidy up, I would say it’s pretty much done.

But I’ll tell you the best part of all this. The other day when I did what I bet a lot of you out there also do but don’t admit to – “googled” myself – I came across one result which I totally didn’t expect. Shauri Yako had dedicated a paragraph of one of their latest newsletters to thanking me, Annie Luxton from New Zealand, and others from all around the world who have helped them in various different ways. That recognition was one of the best feelings I’ve had in a LONG time.

Here is a screenshot of the page as it is now – the best design I could come up with. I know it ain’t the greatest but it’s usable (well, at least I think so!) and does the job :)

p{margin: 0px auto; text-align: center;}.
Shauri Yako Community Youth Support Centre

Google Spreadsheets?!?

June 8, 2006 - 7:10 pm No Comments

So Google are now moving on into the spreadsheet business? This week Google released yet another product – Google Spreadsheets – an online spreadsheet application. Having just had a quick play around with it, it really is quite cool. Random, but cool. The functionality available is impressive – you can save spreadsheets, open ones already saved, download it as an .xls or .csv, and you can even share your spreadsheets with other users.

For the sheet itself, you can click in individual cells or highlight a group of them, type stuff into them, press F2 to edit existing text in a cell (just as you do in Excel), format the text (font, color and type of cell e.g. decimal, dollar, plain text…). You can even include formulas in the cells…

So how is all this done? Well, using a hell of a lot of javascript and some css. I can only assume that the speadsheet might use up a fair bit of RAM on the client-side (if my laptop didn’t have 1.5 gig RAM I might be able to notice…). I wonder well it works on different browsers. I might have to try it out on that mac at work tomorrow. Safari seems to be pretty good at breaking all sites that use css.

Anyway, I guess something like this new product might be used by those who don’t already own Excel and refuse to pay for it, or those who don’t have it installed but do have a nice connection to the internet and need to quickly whip up a spreadsheet… Hmm, who knows.

Below are a couple of screenshots for those who havn’t seen it yet.

Back from South America

February 21, 2006 - 12:28 pm No Comments

It’s been a while but I’m back, back into blogging mode. I’m back from my 5 week trip to Argentina, Uruguay, Brazil and Chile (5 weeks isn’t nearly long enough to see all that!) and settling back down into normal working days in Wellington.

Came across this awesome multi-input touch screen demo.

You could do so much with this type of technology, it really opens up to the floor to a whole new type of computing. If it is pressure, heat, moisture sensitive then it could even take into account how you’re feeling when you touch it. Imagine writing programs for that! Hmm… where can I get me one of those…

Well, better get back to work and stop dreaming…

TravelBlog - my COMPLETED project! (well, nearly)

December 22, 2005 - 11:04 am No Comments

So I have finally finished my TravelBlog . Well, as much as it will probably ever be finished anyway. There are probably a few ‘niceties’ that I could have added (such as an RSS feed or commenting… or a calendar that actually lets you navigate months and years… oh dear, this is sounding worse and worse…).

But anyway, it MUST be finished because I am going on holiday TOMORROW and I’m not doing anything else on it. Really. I’m not.

Its taken me a while to do but I have added most of the things that I said I still wanted to do. Now I can have named users on the site, a login section, adding, editting and deleting articles for logged-in users (with extracts even)! And the best part is the photo upload / management / viewing side of it. When writing an article, you can upload photos and they will be resized to fit the page and a little thumbnail will be created. They are displayed underneath the article. And of course there is the management of these photos… but I’m sure thats enough detail :)

I’m not sure if writing it from scratch was the best idea but it sure did give me heaps of flexibility in terms of what functionality I wanted. The whole interaction with the Google Map is quite neat, and the photo management thing works like I want it. But as I’ve said, it took a fair bit of work to get it to this stage (many late nights) which can lead to some not-feeling-that-great-at-work type days… :)

So, I probably won’t be adding any articles to this blog for a while but I will hopefully be keeping my travelblog quite up to date :)

TravelBlog - my never ending project

October 5, 2005 - 6:56 pm No Comments

So I’ve had this great idea of making a travel blog with an interactive map on it for some time now… But I can’t seem to get around to actually doing much work on it. So I’m going to write a list of all the things I still need to do to get it up and going and maybe that will motivate me to do something about it. Maybe.

Here it goes…

  1. Create a users table in the db.
  2. Write a proper login page with some validation.
  3. Write a blog content management area where users can write an article, edit an existing article or delete an article. This could be expanded endlessly really… Don’t really know where to draw the line. Will have to think about this one. Need to decide on a look and feel for this area.
  4. Fix up the calendar.
  5. Add the ability to see move to previous months (and then move back to current, obviously) on the calendar.
  6. Write code so that map is always centered on the last entry’s location, unless they have chosen to read a particular article in which case it should center on that article’s location if there was a location associated with it.
  7. Write code on the google map icons so that when you click on it it shows something more useful than what it currently does. Maybe displays the title and date of the blog entry at that spot? Maybe shows that entry on the page somewhere? Dunno.
  8. Create some form of photo table in the db.
  9. Add a photo upload mechanism to the blog content management area.
  10. Allow users to associate photos to a blog entry or create galleries?
  11. Figure out where on the page the photos will be displayed and how users can view them…
  1. Create a route on the map (a polyline) of all the places that the entries relate to, in order of date, of course.

    Eeek, this list is getting far too long for my liking. I can see why I keep procrastinating… But all of this has to be done before I go to South America on the 23rd of December coz I want to use it!

Flash Mapping

October 4, 2005 - 7:16 pm No Comments

A while ago I decided I would create some kind of a travel blog using Flash. Seeing as I don’t know Flash or Actionscript very well, this is as far as I got before I decided that using Google Maps and their extensive API would be a lot easier.


The mapping data I used in this app is a free set of basic world data converted into an svg using some free script I found online (can’t remember where or what it was called now, doh). The points are being read out of a MySQL database which is also being used for the “real” travel blog that I am working on. So this map should actually reflect the “real” travel blog when I finally finish it and it maybe even gets used.

Maybe I’ll continue to work on this one day when I don’t have a million other things I want to be doing. :)

GPS Tracking with Google Maps & AJAX

August 25, 2005 - 10:45 am 17 Comments

“Real-Time” tracking of GPS locations on a web site is actually quite hard to achieve. In order to see a dot moving around on an online map, the page would need to be constantly refreshing itself. The refresh would initiate a request back to the server where server-side code would grab the new coordinates of the GPS unit out of a database, redraw the map with a dot on it, and send the whole image back to the user’s browser. Whether the refreshing is caused by the page itself or a hidden iframe on the page somewhere, a full roundtrip to the server every few seconds would soon become super annoying, even if it did mean the user got to see a neat dot ‘seemingly’ moving around on a map.

So how do we get around this? Ideally, we would just want to redraw the ‘dot’, not the whole map and definitely not the whole page. Can this be done? Yes! How? Using AJAX.

No, AJAX isn’t a cleaning product. And believe it or not it isn’t even a new technology. AJAX stands for “Asynchronous JavaScript and XML” and is described by WikiPedia as:

A term describing a web development technique for creating interactive web applications using a combination of:

*HTML (or XHTML) and CSS for presenting information *The Document Object Model manipulated through JavaScript to dynamically display and interact with the information presented *The XMLHttpRequest object to exchange data asynchronously with the web server. (XML is commonly used, although any text format will work, including preformatted HTML, plain text, and JSON)

AJAX essentially allows calls to be made to the server without the user ‘noticing’. The call itself does not cause the page to refresh at all. The developer can make the page do whatever they wish with the response from the server. Most often developers will manipulate the page’s appearance using JavaScript, the DOM and CSS.

So how can AJAX be applied to online mapping? Well, using AJAX we can make ‘asynchronous’ calls to some server-side logic that can grab the newest position of the GPS unit out of a database. The coordinates can then be passed back to our page in an XML string. Client-side JavaScript in our page will interpret the XML and create a ‘img’ element that looks like a dot, using CSS to place it at the correct pixel location on the map.

Since I don’t have a real GPS unit to test this with, I have populated a database table with some fake GPS coordinates. To date I’ve tried this using MapInfo’s MapXtreme 2004 (ASP.NET in C#, plenty of JavaScript, CSS and a horrible little Access DB) which worked a treat. I’ve also tried it using a Google Map which you can see below. (If the dot has stopped moving, refresh the page using Ctrl+F5 – I only have about 10 points in my fake GPS unit db table.)

 

If anyone wants to see my code, please see this article.

Greasemonkeys!

August 4, 2005 - 2:40 pm No Comments

Today, while waiting for my incredibly slow script to finish running, I came across a very interesting Firefox extension: Greasemonkey.

Greasemonkey is a Firefox extension which lets you to add bits of DHTML (“user scripts”) to any web page to change its behavior.

One really interesting use of these Greasemonkey scripts is Stephen Fernandez’s Geotagging Flickr with Google Maps and Greasemonkey . His two greasemonkey scripts allow users to geotag flickr images quickly and efficiently by injecting new links into both the flickr and multimap interfaces. On the flickr side, the user clicks the ‘Add Geotags’ button and is then automatically redirected to multimap.com. Once the user is at multimap.com they can geocode their location. When multimap has found the location it will present the user with a link that says ‘Add GeoTags to your flickr image’. A couple more clicks and the user is back at their flickr image and with a bit of luck, the geotags should have been inserted successfully.

I’m thinking this type of script could be very useful for my TravelBlog application. Getting the lat long coordinates of the user’s location was always going to be a problem as I have yet to find a free world-wide geocoding web service to user. Instead I was assuming users would have to actually browse to a site such as multimap.com or maporama.com, geocode their location and then manually copy and paste the lat long coords into the blog entry. Not so nice.

So the next step is to get the TravelBlog up to speed so it is actually more like a weblog than it currently is. Then onto the Greasemonkey scripts!