Older blog entries for pcolijn (starting at number 55)

Noogling

I've officially survived more than a week at Google, and here's what I've got to show for it:

I'm officially a "Noogler"

My cube-mate apparently wore hers home the day we got them. Mine's still at the office :)

Flex Hours

So I guess flex hours were partially rescinded at Niti, based on PlaNit. Wow. Times change, eh? I was definitely one of the "baddies" when I was there, typically showing up between noon and 1. But I often worked until 2am, and I liked it that way, and it made me happy to sleep until 11:30.

Now, you might read that and think either:

  • I worked insanely hard and killed myself at Niti.
  • I'm so insanely stupid that it took me a billion years to get anything done at Niti.
In fact, neither of these is true (well, there's evidence that I'm insanely stupid, but it didn't take me a billion years to do stuff at Niti). It's just that I found that during the day at Niti, I wasn't all that productive. I talked to people, helped people with their problems, they helped with mine, I made espresso, played foosball, etc. At night, when nobody was around, I could just blast through the bugs (and espresso) like nobody's business. I guess the same effect could have been acheived by showing up insanely early, but I just can't think very well before 11 or so. I tried going to bed early and getting up early in Waterloo for a while, and it just didn't work for me...

At Google there are flex hours too, although almost everybody is in by 11 so you feel a bit odd showing up much later. The funny thing is people were still there tonight when I left at 12:30. Typical silicon valley hardcore-ness I guess. I've taken to showering there (which makes sense, since I cycle in) thus avoiding the 4 to 1 person to shower bottleneck at our home in the morning, giving me a few more minutes of sweet, sweet unconsciousness :)

Proprietary software

So the last few days I've been dealing with a binary-only shared library provided by a certain software vendor. All I have is the header, a PDF doc, and a .so. But this particular software vendor is particularly evil, in that their header file blatantly lies. It lies by telling you some functions want a foo * instead of a foo **, and your stuff is segfaulting all over the place until you objdump the .so to look at the asm and realise it's dereferencing twice. (I became very intimately familiar with objdump during my training; it's a life saver).

And then there's the PDF API docs, which also blatantly lie, by telling you stuff like "If you pass in a foo ** here, we'll point it to something valid with some stuff in it." No you won't, you liars, you'll just leave it as NULL. I mean the least you can do if you're going to release a binary-only .so is have some decent docs and accurate headers.

Fortunately, I've managed to work around most of this crud and should be ready for my first code review tomorrow. My first checkin will involve no less than 5 languages. Fun stuff.

16 Jan 2005 (updated 16 Jan 2005 at 09:46 UTC) »
Google

I gotta say, it's pretty damn sweet. The thing that bothers me the most is probably how confidentiality-happy they are. drheld mentioned that in a previous post, and I feel similarly. People ask me what I'm working on, what I'm doing, etc. and I have to be careful not to be too specific, which I'm totally not used to.

But I'm definitely enjoying the work I'm doing. This week I've been doing a lot of hacking in Ruby, which I didn't really expect at all. But so far I've been enjoying it; I like how you can define mutator members to essentially override '=', and its syntax is terse while still being relatively clean.

One of the things that's been hard to get used to is the scale of it all. Google is bigger than any other company I've worked for, by orders of magnitude. And it's apparent everywhere; many things are more bureaucratic, and there's a kind of "lushness" to it all, from the food to the on-site gym to the massages and car washes, it all just seems a bit surreal at the moment.

Life

I've borrowed a pretty sweet road bike for while I'm here, and I've used it to cycle to work a few times. I even have the clip-in shoes (alright I'll admit it; I did fall once the first time I used them :) I've never had a road bike and it's pretty cool. You sure can go pretty damn fast; I was doing 60 the other day for a while. The downside, of course, is that you really can only use the thing on roads. Gravel of any kind is a serious no-no, so I can't go explore any bike trails near here unless I borrow somebody else's bike.

Got a bank account the other day, without a social security number! Take that, homeland security! That brings the number of countries in which I have accounts to 5.. I should really close some of the ones I don't use sometime. It has a whopping $20 USD in it right now, but at least I can in theory get paid. I'm thinking Monday will be "get social security number day" (or rather, "apply for SSN day"), a process that is apparently not much fun.

Rio Karma

So, I had the damn thing for about a week, and then the other day the disk went and died on me. So now I have to go and try to get it fixed or replaced, and I'm obviously wondering whether it was a good decision in the first place.. sigh. I didn't want to go iPod because of the whole Ogg thing, but at least iPods work. I guess I'll get it fixed and see how it goes, but I don't think I can really recommend it any more...

Update: So I Googled around a bit tonight about the problem I was having with my Karma. Apparently some people had managed to make previously-busted Karmas work again by smacking them against blunt objects. I figured I didn't really have anything to lose, so I tried it, and it worked. My Karma now starts up again and appears to be working normally. The only thing is.. maybe I should have left it broken so I could have gotten it replaced. Now I feel like I have to break it again to be able to send it in.

But if smacking it against stuff fixes it.. how the block do I break it??

Google

So, today was my first day at Google. Man.. that place is schweet. The food is amazing, with tons of veggie and vegan stuff. There are professional Italian espresso/cappucino machines on every floor of every building. And of course the typical high-tech fare: pool tables, foos tables, ping pong tables, etc. They even have two of those "swim forever" pools, where you keep swimming against a current.

The work I'll be doing also seems pretty damn interesting. It's a new product Google's doing, and it's related to some stuff I did at Niti, and that's probably all I can say :) But it's cool. These guys can do some amazing things with JavaScript...

Driving

mtsai: Why didn't you go to the Québec driver's license people while you were there and exchange your G2 license for a full Québec license? Then you could have come back to Ontraio and exchanged your full Québec license for a G license! I haven't done that but several people I know have, and it does apparently work...

Travels

Well, I did eventually make it to California, after spending a night at the overly expensive airport hotel in Vancouver (an expense for which I was not compensated by Air Canada). After that delay, I didn't have any more problems; I and my bags got here just fine. Both mag and drheld weren't as lucky with their bags, however.

So far, Palo Alto seems pretty nice. It's vaguely Vancouver-like, except a bit warmer for this time of year, and super rich (think Kitselano on steroids). Haven't done too much exciting since getting here; today we went out and bought some stuff, and got all our various stuff (wireless router and internet phone) set up.

Orange tree in our back yard

Laptop

It just completely hard locked on me while I was writing this post a few minutes ago, in OS X. I don't think I've ever had OS X do that to me. I do have Ubuntu on this thing, and over Christmas I did make some headway on making it suck less; just using the powersave governor for CPU frequency seems to be better than cpufreqd; it keeps the clock low until you run something CPU-intesive, which is more or less what you want, except maybe if you're getting really low on battery. But it's a start, since all I could ever make cpufreqd do is either run at max all the time or at min all the time, both of which are clearly undesirable. (Out of the box that's all it would do, and I did fiddle with its configuration files for a while before giving up on it, to no effect.)

I still need to get Linux to turn the fan on at a lower temperature though, because for some reason it lets the machine totally bake before firing it up, and I still need to take an axe to Ubuntu's stupid cron jobs and stupid syslog daemon that doesn't do write caching so every time you sudo the disk has to fire up to write to syslog.

And people ask me why I don't think Ubuntu is the greatest thing since sliced bread. With this much tinkering necessary, you might as well just use Debian with the new installer...

Liquor

People sometimes don't believe me when I say that we buy liquor at the Liquor Barn in Alberta. Well, I offer proof, although it isn't really much of a barn:

The oft-fabled Liquor Barn of Alberta

Liquor sale is privatised in Alberta, meaning anybody can get the requisite license and open up a liquor store. I personally think it's much better than Ontario, where you have to go to the stupid LCBO or Beer Store, both of which have annoying hours and are often inconveniently located. There was a Beer Store near where I lived in downtown Toronto that closed at 8! 8 o'clock.. in the centre of Canada's biggest city! I couldn't even buy beer on my way home from work!

In Alberta, you can buy your liquor 24 hours a day, 7 days a week. And despite rumours to the contrary, it's a reasonably civilised place; you can bring your own wine to many restaurants too.

Of course, Québec trumps them all with booze in the grocery stores and deps, although it's still not 24 hours a day...

And speaking of Québec, it appears I won't need to be subjected to awful American beer this term, as the local organic food store carries several Unibroue beers, as well as a bunch of other imported stuff. Phew.

Travels

So today was the big day I was going to go to California. It was going so well. I caught my flight from Calgary, and it was only 20 minutes late in Vancouver. I got through US immigration with no problems. I got my bags and trundled them through US customs. And then.. my flight was cancelled, along with every other flight to San Francisco leaving today.

Stupid Vancouverites and their being unable to handle a few cm of snow. You'd never have this many cancelled flights at Calgary or Montréal due to a measely 4cm of snow. Wimps. At least this airport has (expensive) wireless...

Christmas

Had my last exam, trains, last Wednesday. I brought all my luggage to the exam, since I had to catch the 5:00 Greyhound out of Waterloo to catch an airport shuttle in Toronto at 7:30 to catch my flight at 9:00. After that it was serveral mad days of shopping and cooking, all culminating Christmas day in a feast for our family.

It was fun, but extremely tiring. Hopefully the rest of my time here in Calgary will be a bit more relaxing.

amps in a festive mood

My parents gave me a Rio Karma 20GB mp3 player. Unfortunately, it hasn't arrived yet so I haven't had a chance to play with it, but I'm looking forward to it. Plays ogg, flac, mp3, wma and has an ethernet HTTP interface (in addition to USB 2.0) to alleviate all your cross-platform woes :)

But possibly the coolest gift Santa brought this Christmas was the Gender Bender robot for my friend thapthim.

Gender Bender gives us a show

Skiing

Tuesday I went skiing with amps and my grampa, and it was a lot of fun. In addition it was a beautiful day and the mountains were gorgeous. I'd forgotten what crisp, winter mountain air was like, not having been skiing in several years.

View from near the top of Sunshine's angel chair

Sysadmin

My sysadmin duties for my family have begun. Spent last night doing an unconventional install of Ubuntu on my sister's laptop. Her cd-rom drive wasn't playing nicely so I had to use install floppies (blech) for Sarge and a statically-compiled debootstrap to get it going.

Today I updated my parents to Fedora Core 3, which went pretty smoothly, and before I leave I need to set up an APC UPS on the little router/DNS/SMTP server, which should be easy except it's running a 2.2 kernel, so some hackery may be required.

My parents do in fact run Linux, but that's not as amazing as it might sound, since my dad is a CS prof at the University of Calgary and he's a UNIX greybeard, so he knows what he's doing. Still, they have surprisingly few problems with Fedora these days, which is a good sign.

Stupid house

No fucking water.. AGAIN. Notice that no water means no coffee, which is an extremely bad thing! We're currently boiling snow water in pots on the stove, at which point we'll run it through a Brita and I can hopefully get my fix.

(And yes, andrew, the snow was yellow. How'd you know?)

Moving

It sucks. I can't believe I do it every term. I spent the better part of this week packing my stuff, cramming it into my sister's Tercel, and dropping it off at a storage locker. I think the most impressive was when I got my entire bed, frame and futon, into the car, along with several boxes and a bike. I never knew Tercels could do that :)

I managed to sucker one of my friends into keeping both my computer and our file server at his place. Once he saw the music collection, it wasn't hard to convince him :) So I should be able to get at all of it while I'm down south, and my web page should still work. Anybody know any good streaming music servers? I think I used icecast when I was in England, is it still the best way to go?

School

My next exam is tomorrow. It's physics, and should be easy. I'll have to study a bit, but not much.

I'm currently procrastinating writing a paper for my music course. The prof extended the deadline so we could just hand it in at the exam (which, for that course, is on Monday). The extended deadline is, as always, a mixed blessing. I'm sure glad I didn't have to write the stupid thing while finishing up my real-time project, though.

Montréal

Had a great time seeing a bunch of you NITIots last weekend. It was good to catch up with you and rest a bit.

mrwise shows off his classy table manners

Descartes doing what she does best

While sitting here procrastinating, I came across some photos from the summer that I don't think I posted before, but which brought back some good memories...

Andrew and pmccurdy go at the beer at Oka

mrwise gives us his usual smile

WvMAPI

I intended to get in on the hackfest with wlach, but with moving and packing and everything, didn't quite manage it. Anyway, it's my intention to do some work on WvMAPI in my free time over the next term, for my "NDF" at Google. I'd like to do all the async stuff I talked about in my work report, add in the attAttachment stuff, and write some EPlugins for Evolution.

Some might say I'm insane, but I really want the satisfaction of cleaning it up, and I've gotten a number of winmail.dat attachments lately, so that's sort of prodded me along.

Life

Watch out, NITIots! mrwise and I are coming to Montréal this weekend to grace you with our magnificent presence. e-mail me if you want to go out for beers or foos or something.

More poking and prodding by medical experts, including an annoying test next week where I can't eat anything for a day. On the plus side, the specialist gave me a prescription for B12, so I can stop feeling shitty while they do all this stuff :)

And I'm so gonna look for a bank account that gives me a free gun when I'm in the states!

Exams

They suck. I procrastinated an incredible amount studying for my CS 370 exam I had today, and now I'm glad I did. It was dead easy, not worth even the paltry amount of studying I did do. Mon examen de français est demain. Je pense qu'il sera assez facile; mon français écrit n'est pas très mal. Ce qu'il faut améliorer, c'est mon français oral. C'est un peu bizarre je suppose; je connais beaucoup de personnes qui trouvent l'inverse. C'est peut-être que pour moi, c'est plus facile d'obéir les régles de grammaire que d'oser parler.

CUPS

hub: you may want to dig around in Niti's CVS a bit. I remember writing a patch to CUPS that made it start up considerably faster, for an old version of ExpressionDesktop. I don't remember what happened to it, but my guess is "nothing." :) I'm not sure if it would still be relevant, but it's probably worth a look.

Trains

It's finished! Yay! We had our demo on Friday. Unfortunately, our stuff didn't work as well in the demo as it had the night before (famous last words). Our final project was "follow the leader," which was apparently very popular this term. The idea is basically to put all the trains in a loop on the track, and have them be evenly spaced out. So the difficult problems are merging new trains into the loop, and maintaining constant velocity.

The latter may not sound very difficult, but believe me, it is. The trains have speed settings, like speed 5 or speed 10. But that means nothing in terms of actual physical speed in cm/s. One train might go at 15cm/s at speed 5, another might only go at 10cm/s. So you have to be constantly updating the speed estimates for the trains and dynamically changing their speeds to keep them all going at roughly the same speed.

Anyway, we managed to get 8.5/10 on the project even though it didn't work as well as it should have, so I'm not too upset. It's odd though; the whole term, all these months of hard work, culminates in a 20 minute demo. The prof seemed distinctly uninterested; I can't blame him, either. Our demo was at 4:20 pm and he'd been seeing demos since 9 am. It's just odd to have all this stuff that you've been devoting your life to for months suddenly be turned into a number and become irrelevant. That's school for you, I guess.

And although I did learn a lot of stuff, most of it didn't really have to do with real-time programming. I became much better at low-level programming, learned about x86 architecture, designed some graph algorithms, and generally, I think, just became a bit of a better programmer. But the actual real-time component of the project was pretty small.

Anyway, with that, I leave you with one last screenshot. This is our track simulator, with 3 trains in the loop, and a 4th one merging in at the bottom. The red boxes are trains, and the circles are their "slots" in the loop. The program constantly computes the distance between trains and their slots, updates speed estimates, and adjusts train speeds. It also updates the slot targets when new trains are added, and computes merge targets for new trains based on their locations.

Cap'n! There be trains here!

Life

Feeling a bit poor these days, due to it being near the end of term and my having spent a bunch of money on things for next term, like my flight, my visa, and a month's rent. Needless to say, Christmas will be going on plastic :) But I'll become rich as soon I get my first paycheque at Google, so I should be able to squeeze through without too much trouble.

Will probably be coming to Montréal next weekend with mrwise. Hopefully I'll get to see a few of you NITIots. I'll post the details of when we're coming and all that when I have them.

46 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!