pphaneuf: (Enlightened)
We moved into our new office this week (photos courtesy of MAD, thanks!), and it's pretty damned awesome! Considering the small size of the office (in number of people), it is extremely nice, the food is great, and so is the view (we had a nice view from the 24th floor, but now we're more "in the action", I like that better). Plus, we can easily reach the wifi from the pub nearby, hehe!

While the move was ongoing, we had an off-site activity on Île-Ste-Hélène that was pretty cool, involving, among other things, geo-caching, which I had never done before and is a lot of fun. It can be surprisingly difficult to find a small item, even when given the location within 10 feet! I bike there from home, and it was particularly nice, hitting 40 kph for fairly long stretches and all. On the return trip I was pretty confident that I'd get to the dinner's location first, but when I found out that the likely reason for my swift arrival was a wicked strong headwind, I wasn't so confident anymore. I did arrive first anyway, but I'm told they took a brief detour in a sketchy St-Henri bar first. Crazy people!

Today, we also obtained a vacuum cleaner at home. You're probably thinking that this doesn't really sound all that exciting, and normally, I'd agree with you, but that was before I met the Dyson DC20. As far as box-opening experience goes, relatively speaking (let's face it, it's still just a vacuum cleaner), they're taking lessons from Apple, it looks like. One of the selling points is how it can fit into a small space, and when I got the box, I was a bit worried that it'd be missing, you know, maybe the whole thing?!? But no, it was all in there, and even when assembled, it packs into almost no space, and is very cleverly engineered.

Tomorrow, a rather late in the making haircut.
pphaneuf: (Default)
Something that I have said a number of times is that nowadays, there is almost no reason to pick C over C++ for a new project (one of the few reasons that I know of involve writing execute-in-place code for very small embedded systems, so no, GNOME definitely doesn't qualify!). Worst case, you write exactly the same code you'd have written in C, just avoiding using the new keywords as identifiers, and you then get better warnings (remember, no templates would be involved) and stricter type checking (no more silent casting of void* to pointers to random things! No more setting enums from any random integral junk you happen to have at hand! No more forgetting a header and using a function with the wrong parameters!).

But these slides really put it together, from someone who's generally thought of as neither insane or dumb. Doesn't really have much to do with GCC in particular, other than just the general fact that this is becoming so obvious that even GCC might be making the switch...

Edit: This article by Amit Patel is also pretty good on this subject.
pphaneuf: (Tongue)
I talked about how the weather was great for biking recently in my previous post, when I left the office, it started raining hard, and it stopped just as I arrived home.

A sign? At least, it's not too cold...
pphaneuf: (I Like Beer)
Uh, there was a traffic jam on my small street today when I left for work?!? Complete with no less than two city buses, trying to work around the cranes and other construction equipment currently cluttering the street... Weird.

Oh, man, I've been meaning to post for exactly two weeks, yet didn't. I did this thing where I thought about hypothetical posts that I'd be writing while on the metro and biking, then forgot to actually post it.

It helps that there has been a fair deal of biking going on, beginning with what I called the Weekend of Doomed Awesomeness for a bit (if only in my head). This started by going to Mutek's Nocturne 3 with [livejournal.com profile] tygrbabe on the Friday. Then, went to the Mondial de la bière with [livejournal.com profile] azrhey in the afternoon, after which [livejournal.com profile] tygrbabe joined us to go to Mutek's Nocturne 4. How to follow this best? Sunday, I showed up at [livejournal.com profile] cpirate's place almost in time (9am-ish, after going to bed at 5am!) for, you know, a little Tour de l'Île (with [livejournal.com profile] scjody as well), after which we stopped for well-deserved poutine at La Banquise (and a coffee, so I could stay conscious). Then (the same day!), [livejournal.com profile] azrhey and I met with [livejournal.com profile] rezendi for a quick pint before catching Le Salaire de la peur at Cinéma du Parc. In case I might have survived, [livejournal.com profile] tygrbabe invited me to see She Wants Revenge for my birthday (got me brownies too, woot!), on the Monday evening (we were joined by [livejournal.com profile] fuzzyilla too, ahoy!).

While I thought Nocturne 3 was quite excellent (Millimetrik and Modeselektor were awesome, Kid Koala very good, although I've seen better sets from him, and the other bands were quite fun too), Nocturne 4 let me a little bit down. Most of the bands didn't "click" with me much, and the whole programme was running late, which combined with the act I wanted to see most (Deadbeat, was excellent!) played last, made for leaving the place extremely late. Still, it was nice too, I just wish I could have slept in the next day!

I'll have to agree with [livejournal.com profile] tygrbabe, She Wants Revenge was good, but they'd have to put out a killer album for me to go to their next show. Some of their opening bands were really wacky and not all that good either, including a "punk" band that sounded like Avril Lavigne on speed.

So after that, I, uh, didn't do much for the two last weeks, as you might have guessed. I did bike to work a lot (for which there was tremendously good weather!), played with my own early birthday gift to myself (a new top-end 24" iMac, Core 2 Duo 3.06 GHz and GeForce 8800 GS, smokin'!) and coded (mostly on Quadra, more than 20 commits just this weekend!). There was a visit from [livejournal.com profile] musicdieu and [livejournal.com profile] cpirate, watching of Euro Cup games, and Munchkins.

[livejournal.com profile] azrhey and I went out on the city last Saturday, was quite nice, and I got myself a nice watch (Danish design and titanium? sign me up!). We ended up going to the cinema and watching You Don't Mess with the Zohan. Yes, I know, I know, but it's actually pretty funny, mostly due to the weird cultural references (fizzy bubbles and hummus, baby!), and was saved because I have a small idea of what's going on in that culture, and would probably have been even funnier if I was actually part of it. I don't really expect it to do well, although there's a fair share of stuff that a lot of North American would find funny (silly fight scenes, sexual jokes), but I laughed really hard at the hacky sack, fish and hummus jokes, myself.

On a closing note, I've had a weird email recently from OkCupid (which I do find entertaining, for various reasons). I often get the "come back to our site so you can see and click ads" emails, but this one was different, telling me that there was one particular user I should message where there was some sort of category 5 crazy outlier match. Apparently, the love of my life is in New York state, which is too bad, because I'm not, ha! It then showed the usual "you might be interested in those people" bunch of people, but as opposed to the usual, this morning it was a bunch of my friends, so, well, I guess it sorts of works? I do like my friends, they're nice and everything. :-P

Moving On

May. 28th, 2008 10:52 am
pphaneuf: (Default)
Reg Braithwaite was writing not long ago about how we can be the biggest obstacle to our own growth. It made me realize how I've dropped things that I was once a staunch supporter of.

I was once a Borland Pascal programmer, and I believed that it was better than C or even C++. I believed that the flexibility of runtime typing would win over the static typing of C++ templates, as computers got faster. I belived that RPC were a great idea, and even worked on an RPC system that would work over dial-up connections (because that's what I had back then). I put in a lot of time working on object persistence and databases. I thought that exceptions were fundamentally bad. I believed that threads were bad, and that event-driven was the way to go.

Now, I believe in message-passing and in letting the OS kernel manage concurrency (but I don't necessarily believe in threads, it's just what I happen to need in order to get efficient message-passing inside a concurrent application that lets the kernel do its work). I wonder when that will become wrong? And what is going to become right?

I like to think I had some vision, occasionally. For example, I once worked on an email processing system for FidoNet (thanks to Tom Jennings, a beacon of awesome!), and my friends called me a nutjob when I told them that I was designing the thing so that it was possible to send messages larger than two gigabytes. What I believed was that we'd get fantastic bandwidth someday where messages this large were feasible (we did! but that was an easy call), and that you'd be able to subscribe to television shows for some small sum, where they would send it to you by email and you'd watch it to your convenience. That's never gonna happen, they said! Ha! HTTP (which I think is used in the iTunes Store) uses the very same chunked encoding that I put in my design back then...

Note that in some cases, I was partly right, but the world changed, and what was right became wrong. For example, the 32-bit variant of Borland Pascal, Delphi, is actually a pretty nice language (ask apenwarr!), and while it isn't going to beat C++ in system programming, like I believed it could, it's giving it a really hard time in Windows application programming, and that level of success despite being an almost entirely proprietary platform is quite amazing. Even Microsoft is buckling under the reality that openness is good for language platforms, trying to have as many people from the outside contributing to .NET (another thing to note: C# was mainly designed by some of the Delphi designers). Imagine what could happen if Borland came to its sense and spat out a Delphi GCC front-end (and use it in their products, making it "the real one", not some afterthought)?

I doubt that's going to happen, though. For application development, I think it's more likely that "scripting languages" like Ruby, Python and JavaScript are going to reach up and take this away from insanely annoying compiled languages like C++ (and maybe even Java).

But hey, what do I know? I once thought RPC was going to be the future!

Packed!

May. 26th, 2008 05:05 pm
pphaneuf: (Default)
Ok, so after going to Festival Kinetik last week (where I nearly snapped my neck ogling!), I booked up this weekend pretty solid: going to Mutek Nocturne 3 and 4 (Friday and Saturday), the Beer Fest on Saturday, the Tour de l'île on Sunday and She Wants Revenge on Monday. It will be both intense and awesome, I think!

Gifted myself with an iMac 24" this weekend (the big one with the GeForce!), ostensibly for my birthday, and managed to play some Battlefield 2142, for, uh, "testing". The testing is pretty conclusive, and it's quite awesome. And, oh, so silent, yet so powerful! I will also be looking forward faster compiling on my old laptop through Xgrid.

I've also come up with a design in my head for doing zero-overdraw overlapping windows with support for alpha transparency. I'm dreaming of a "Quadra HD", and while I don't really know what it'd look like, I know that according to historical figures for development speed, we should release that around 2012 or so! I also got a "pre-opened" gamepad last week, which will allow for adding support for it in Quadra, which has been requested since more or less forever. That could be here as soon as 2009! ;-)
pphaneuf: (Default)
I was wondering how to handle timeouts correctly while blocked for I/O on sockets, with as few system calls as possible.

Thanks to slamb for reminding me of SO_SNDTIMEO/SO_RCVTIMEO! Combined with recv() letting me do short reads, I think I've got what I need for something completely portable.
pphaneuf: (Default)
Being the end of the world and all, I figure I should go into a bit more details, especially as [livejournal.com profile] omnifarious went as far as commenting on this life-altering situation.

He's unfortunately correct about a shared-everything concurrency model being too hard for most people, mainly because the average programmer has a lizard's brain. There's not much I can do about that, unfortunately. We might be having an issue of operating systems here, rather than languages, for that aspect. We can fake it in our Erlang and Newsqueak runtimes, but really, we can only pile so many schedulers up on each others and convince ourselves that we still make sense. That theme comes back later in this post...

[livejournal.com profile] omnifarious's other complaint about threads is that they introduce latency, but I think he's got it backward. Communication introduces latency. Threads let the operating system reduce the overall latency by letting other runs whenever it's possible, instead of being stuck. But if you want to avoid the latency of a specific request, then you have to avoid communication, not threads. Now, that's the thing with a shared-everything model, is that it's kind of promiscuous, and not only is it tempting to poke around in memory that you shouldn't, but sometimes you even do it by accident, when multiple threads touch things that are on the same cache line (better allocators help with that, but you have to be careful still). More points in the "too hard for most people" column.

His analogy of memcached with NUMA is also to the point. While memcached is at the cluster end of the spectrum, at the other end, there is a similar phenomenon with SMP systems that aren't all that symmetrical, multi-cores add another layer, and hyper-threading yet another. All of this should emphasize how complicated writing a scheduler that will do a good job of using this properly is, and that I'm not particularly thrilled at the idea of having to do it myself, when there's a number of rather clever people trying to do it in the kernel.

What really won me over to threading is the implicit I/O. I got screwed over by paging, so I fought back (wasn't going to let myself be pushed around like that!), summoning the evil powers of mlockall(). That's where it struck me that I was forfeiting virtual memory, at this point, and figured that there had to be some way that sucked less. To use multiple cores, I was already going to have to use threads (assuming workloads that need a higher level of integration than processes), so I was already exposed to sharing and synchronization, and as I was working things out, it got clearer that this was one of those things where the worst is getting from one thread to more than one. I was already in it, why not go all the way?

One of the things that didn't appeal to me in threads was getting preempted. It turns out that when you're not too greedy, you get rewarded! A single-threaded, event-driven program is very busy, because it always finds something interesting to do, and when it's really busy, it tends to exhaust its time slice. With a blocking I/O, thread-per-request design, most servers do not overrun their time slice before running into another blocking point. So in practice, the state machine that I tried so hard to implement in user-space works itself out, if I don't eat all the virtual memory space with huge stacks. With futexes, synchronization is really only expensive in case of contention, so that on a single-processor machine, it's actually just fine too! Seems ironic, but none of it would be useful without futexes and a good scheduler, both of which we only recently got.

There's still the case of CPU intensive work, which could introduce trashing between threads and reduced throughput. I haven't figured out the best way to do this yet, but it could be kept under control with something like a semaphore, perhaps? Have it set to the maximum number of CPU intensive tasks you want going, have them wait on it before doing work, post it when they're done (or when there's a good moment to yield)...

[livejournal.com profile] omnifarious is right about being careful about learning from what others have done. Clever use of shared_ptr and immutable data can be used as a form of RCU, and immutable data in general tends to make good friends with being replicated (safely) in many places.

One of the great ironies of this, in my opinion, is that Java got NIO almost just in time for it to it to be obsolete, while we were doing this in C and C++ since, well, almost forever. Sun has this trick for being right, yet do it wrong, it's amazing!
pphaneuf: (Default)
Ok, here we go:

Event-driven non-blocking I/O isn't the way anymore for high-performance network servers, blocking I/O on a bunch of threads is better now.

Wow, I can't believe I just wrote that! Here's a post that describes some of the reasons (this is talking more about Java, but the underlying reasons apply to C++ as well, it's not just JVMs getting wackier at optimizing locking). It depends on your platform (things don't change from being true to being false just out of the blue!), and more specifically, I have NPTL-based Linux 2.6 in mind, at the very least (NPTL is needed for better futex-based synchronization, and 2.6 for the O(1) scheduler and low overhead per thread). You also want to specify the smallest stacks you can get away with, and you also want a 64-bit machine (it has a bigger address space, meaning it will explode later).

The most important thing you need is to think and not be an idiot, but that's not really new.

And when I say "bunch of threads", I really mean it! My current "ideal design" for a web server now involves not just a thread per connection, but a thread per request (of which there can be multiple requests per connection)! Basically, you want one thread reading a request from the socket, then once it's read, fork it off to let it do its work, and have the writing of the reply to the socket be done on the request thread. This allows for as much pipelining as possible.

Still, event-driven I/O is not completely useless, it is still handy in the case of protocols that have long-lived connections which stay quiet for a long time. Examples of that are IRC and LDAP servers, although it's possible that with connection keep-alive, one might want to do that with an HTTP server as well, using event notification to see that a request is arrived, then hand it back to a thread to actually process it.

I also now realize that I was thinking too hard in my previous thoughts on using multiple cores. One could simply have a "waiting strategy" (be it select() or epoll), and something else to process the events (an "executor", I think some people call that?). You could then have a simple single-threaded executor that just runs the callbacks right there and then, no more fuss (think of WvStreams' post_select()), or you could have a fancy-pants thread-poll, whatever you fancied. I was so proud of my little design, now it's all useless. Oh well, live and learn...
pphaneuf: (Default)
After [livejournal.com profile] azrhey and I spending an evening in SketchUp Thursday, we placed some sort of initial order for a custom TV unit Friday. Hopefully, this is going to be quite nice!

After that, we met up with [livejournal.com profile] cpirate for some Frite Alors, on Rachel. I don't remember other Frite Alors being as environmentally-aware as that one, where they had bike racks (which look like they were made out of recycled materials) and some anti-car propaganda outside, unbleached disposables, and a number of other small details that I don't remember (it wasn't all, I kept noticing more stuff). That's pretty cool, because it's all stuff that doesn't really make a difference for the customers, it's not forcing customers into making a compromise ("oh, it's good for the planet, so I'll put up with some annoyance"). If every restaurants (or at least, every fast food joints, say) did that, it could potentially make a positive difference, without having to convert anyone to a "religion".

We then biked down to Le Sainte-Elisabeth, to join with [livejournal.com profile] gregorama and some of his friends. The place was packed, and [livejournal.com profile] cpirate got some "surprise beer", but it's a generally nice place. There's the crazy infinite wall covered with vine in the back, a nice terrasse, good music, and a decent selection of beers. I found it a little bit too crowded, but it was a Friday night, so that's kind of expected, but on any other night, it would be quite fine.

Sunday, [livejournal.com profile] cpirate dared to show up at my place, and we headed out on a bike ride, to try to prepare a bit for the Bike Fest stuff. It was a hair under 50 kilometres, going across the Estacade, then out to Ste-Catherine, back along the river to St-Lambert, crossing to Notre-Dame Island at the Victoria Bridge locks. Just the perfect distance in my opinion, for what my legs could take me. [livejournal.com profile] azrhey greeted us with roast beef, which was quite welcome!

Dropped by the Burning Mondays, where [livejournal.com profile] tygrbabe played me some Sisters of Mercy (I don't even own any!). I'm so special! [livejournal.com profile] pdage came with [livejournal.com profile] azrhey and I, foosball was played, [livejournal.com profile] liberation_now had coffee (and it showed!), we were joined by [livejournal.com profile] scjody (with whom I had a rather geeky conversation about the state of the computer industry), and there was beer. Fun was had!

Yesterday, I scored a free Specialized bike pump, courtesy of the Google swag for Bike to Work day (which is tomorrow? Friday? no matter, I'll bike both if I can!). Went to the gym, and despite it being a short visit, I felt unusually quickly beaten, even having to give up on the rower after a while. Didn't even bother noting my visit.
pphaneuf: (Default)
It was extremely brief, and you had to pay very close attention, but the sugar season's passed now, and thankfully, [livejournal.com profile] azrhey and I managed to catch some sugar shack action, thanks to my dad inviting us over to his annual thing (which went better than the last time, as I wasn't dying this time!). It was what, [livejournal.com profile] azrhey's third time in a sugar shack in her life? How do they manage over there? ;-)

I went for a lightning trip to New York City, where I thought it'd be a good idea to get a room at the Hotel Chelsea, since, you know, the office is in Chelsea, that'd be convenient, no? I did listen to punk music, but I don't remember stabbing anyone. I didn't write a novel either, but I did write a small piece of code, related to my most recent ranting, where my hack gets similar latency on event handling as busy waiting on the event queue, while using less CPU (and much lower latency, by multiple frames!) than SDL's built-in SDL_WaitEvent.

This last item results in myself restraining myself very hard from going off and making a high-performance game library. Add it to the list of things I could do very well, but that I shouldn't be doing because it's useless. Argh.

[livejournal.com profile] azrhey and I went to see Iron Man, which was pretty damned good, I think. I think that it was a good introduction, although the battle at the end was a bit contrived and short on time. I think Justin Hammer might have been a better choice, with multiple supporting bad guys, but Iron Monger does make for big badaboom. I liked the hints at War Machine, and the small (in that movie, at least) involvement of S.H.I.E.L.D..

I'm now about to register for the Bike Fest, which inconveniently overlaps with MUTEK. The day ride doesn't pose a problem, but I really like the night ride, and that will obviously mean that I'll be missing out on something else... We'll see.

Old Fogeys

Apr. 25th, 2008 12:21 pm
pphaneuf: (Default)
I've become a member of Communauto last week, and combined with getting my bike back, means that I'm at what is going to be my peak mobility for the next little while.

Used Communauto a couple of days later to go to a Quadra hackfest at Rémi's, with [livejournal.com profile] slajoie as well. I've had a surge of interest in Quadra, but it is a delicate thing to do: we need to release a new stable version before we can hack on the "next generation" version, and while we're getting very close now, there is definitely a momentum thing that can be lost just too easily. And now the kind of things left are packaging related, which isn't the most exciting (so help us out, [livejournal.com profile] dgryski!). We've got interesting ideas for future development, but we can't really do any of this for now, since it would make merging from the stable release very annoying (and it already isn't too wonderful at times)...

Getting my bike back meant going to work on bike, and that is ridiculously quick, on the order of six to seven minutes. That's faster than the metro, by a lot (that's only a bit more than the average waiting time, and I don't have to walk to Lionel-Groulx). In my opinion, that's not even good exercise, I hardly have time to break a sweat even if I go fast, so I might end up taking detours on good days (the Lachine Canal bike path is nearby).

Related to Quadra, I've been looking at SDL (which the next version of Quadra uses instead of its internal platform) and SDL_net. It's funny how game developers are so conservative sometimes! I don't know much about 3D games, but in 2D, people seem to develop more or less like they did on DOS more than 10 years ago, which was very limited back then, due to DOS not having much of a driver model. Because of that, since anything more than page flipping and waiting for the vertical retrace (using polling PIO, of course) is specific to every video chipset. A game wanting to use accelerated blits had to basically have its own internal driver model, and when a card was not supported, either the game would look bad (because it would use a software fallback), or would not work at all. In light of that, most games just assumed a basic VGA card (the "Super" part is made of vendor-specific extensions), using 320x200 in 256 colors (like Doom), or 640x480 in 16 colors (ever used Windows' "safe mode"?), with maybe a few extra extensions that were extremely common and mostly the same.

Then, DirectX appeared and all the fancy accelerations became available to games (window systems like X11 and Windows had their own driver model, but could afford to, being bigger projects than most games, and were pretty much the sole users of the accelerations, so they existed). What happened? Game developers kept going pretty much the same way. Some tests by Rémi back then found that using the video memory to video memory color key accelerated blits (with DirectDraw), getting hundreds of frames per second, where the software equivalent could barely pull thirty frames per second on the same machine. About an order of magnitude faster! You'd think game developers would be all over this, but no, they weren't. They were set in their ways, had their own libraries that did it the crappy way, and didn't bother, overall. The biggest user of 2D color keyed blitting is probably something like the Windows desktop icons.

Then, 3D acceleration appeared, and they just didn't have the choice. The thing is, this hardware still isn't completely pervasive, and especially for the target audience of a game like Quadra, who like nice little games and won't have big nVidia monsters in their machines, so using the 3D hardware for that kind of game would leave them in the dust. Nowadays, DirectDraw has been obsoleted and is now a compatibility wrapper on top of Direct3D, so oddly enough, we're back to 2D games having to avoid the acceleration.

Thankfully, in the meantime, the main CPUs and memory became much faster, so you can do pretty cool stuff all in software, but it's kind of a shame, I see all of this CPU being wasted. Think about it: Quadra pulls in at about 70% CPU usage on my 1.5 GHz laptop, so one could think it would "need" about 1 GHz to run adequately, right? Except it worked at just about full frame rate (its engine is bound at 100 frames per second) on my old 100 MHz 486DX! Something weird happened in between...

Game developers seem to be used to blocking APIs and polling so much, it spills over in SDL_net, which uses its sockets in blocking mode, and where one could easily lock up a server remotely by doing something silly like hooking up a debugger to one of the client and pausing it. Maybe unplugging the Ethernet cable would do it too, for a minute or two, until the connection timed out. How awful...
pphaneuf: (Default)
Wow, fabulous weather today! Can't wait to get my bike (this weekend?)...

Caught up with [livejournal.com profile] sfllaw for some fine eating at La Maison de Kebab, where we discussed various things, such as politics, world economy, food (duh!) and a few other things. We gave him back his little black book. I didn't peek, I swear!

Tuesday, there was some poking at my PowerBook, upgrading it to Leopard and isolating a bug in the video drivers. The bug is kind of annoying, but I find Leopard to be a nice upgrade, and from what I can see, not really any slower on my machine. They do pack up more bundled crap than in previous versions, as they always do, but like before, stuff that you can turn off.

Yesterday, I went to the gym. It wasn't my first time, but it was my first serious workout, and man, did it ever kill me. After one of the stretching exercises on the mat, I put my arms down to push myself up, and it just did nothing. I suspect I will become quite strong in the near future, but for now, yow. I came home to the visit of [livejournal.com profile] swestrup and [livejournal.com profile] taxlady, where we had a farandole of pizza.

Today, at lunch, we established that stabbing is not necessarily atomic.

Now, off to the notary for finishing securing living quarters!
pphaneuf: (Default)
Saturday, while shopping around for a better piece of furniture to hold our nice new television, [livejournal.com profile] azrhey and I drove in front of the Club Soda, I saw that there was Autechre on the headline there... For the next day! A bit later that evening, [livejournal.com profile] tygrbabe poked me about it too, but I was still unsure.

Finally decided to go, accompanied by [livejournal.com profile] azrhey and joining with [livejournal.com profile] crybetty, [livejournal.com profile] m3lang3 and [livejournal.com profile] tygrbabe (also saw [livejournal.com profile] phreedum there), and it was very good! I didn't like Massonix too much, and Autechre's set was a bit short (an acceptable hour, but could have used more). Rob Hall was pretty good as well, but while it was something I'd find mind-blowing in a club, for a show it was merely okay, IMHO. All in all, quite enjoyable.

I was surprised to learn today that iLike thinks that Joy Division, somehow, is related to Aphex Twin?!? Uh, ok...
pphaneuf: (Default)
It's been sort of a busy week, but in a good way, for the most part.

There was an unusually high amount of the [livejournal.com profile] tygrbabe this week, having been to her DJing night at the Katacombes, her visiting us at home, then her birthday, then more of her birthday (which involved a bunch of hot people hanging out at my place, so yay!)... That's cool, I think. We've got bait for more visits, in the form of tons of Torchwood and the Dieux du Stade DVD (which might also work very well with [livejournal.com profile] archdiva, hehehe!).

In her most recent visit, she left me some computer hardware to fix up, which is kind of amusing, because we're currently being invaded by electronic equipment already! I got a new television delivered Wednesday, got all sorts of cabling to hook my computers to it (gotta be able to watch the Torchwood!), and we got a PVR cable box (I'd do without broadcast television myself, but [livejournal.com profile] azrhey is a fan, and there's got to be something on?). This means that the place is a bit of a disaster area at the moment, while I try to put all this together in a sensible way.

For anyone looking to get some audio/video cabling, I'd like to point out something rather weird. As you may know (well, if you're still reading past the previous sentence), there's some serious price-gouging going on with A/V cabling. In some cases, it can be understood (analog signals are sensitive to interferences of all sorts, better shielding and conductors do make a difference), but in the modern world of fully-digital HDMI cables, WTF? Unless you have a freakin' ion storm in your living room, the very cheapest digital cable will get you the best possible quality (unless it doesn't, in which case it'll either be very obviously horrible, or outright won't work). Stores liked to sell high-margins cabling, though, so they're still at it anyway. So, I set out to find the cheapest digital cabling possible.

You'd think that Apple would be in on the price gouging, no? Well, apparently, Apple is a bit schizophrenic in that regard. Future Shop had this 4 feet HDMI to DVI cable, which is the cheapest of that type they had (there were some cheaper HDMI-DVI adapters, but with the cable, came out more expensive). At the Apple Store, they have this 2 metre (6.56 feet) HDMI to DVI cable. As I said, as long as they'll work, the image quality will be identical, and the one at the Apple Store is longer. The Apple Store one is also only $19.95, compared to $70.99 for the (shorter) one at Future Shop. That's less than a third the price!

So, less than a third of the price for better stuff? Uh, a bit out of character for Apple, but keep it up, I could use more of that (if only as an "inspiration" for other stores)!
pphaneuf: (Default)
So, Sunday was Stuff Your Face With Chocolate Day, so we did. There was rabbit for dinner, appropriately, and I discovered that adding Frangelico to chocolate mousse turns it into a very tasty, yet boozy version of Nutella.

On Monday evening, I headed out to see (well, listen, really) to [livejournal.com profile] tygrbabe's set at the Katacombes. But before doing so, [livejournal.com profile] azrhey and I (well, mostly me, really), in the interest of saving ourselves from the dangers of the eggs in the mousse going bad, dived into the mousse leftover. Tasty! Once there, I was surprised at the amount of computer geekery going on, between a sticker on the toilet stating that "Your Computer Suck", and meeting [livejournal.com profile] crybetty, whose dream is to own a Macintosh LC 475 once again and [livejournal.com profile] obskura exclaiming that she's surrounded by engineers or something. That's kind of weird.

But it was an especially nice outing for me, because it has been almost two years that I haven't been able to do this kind of thing, going out on a week night, having a few drinks and a bunch of fun. So it's all special and awesome, yay for that!

After going back home, I finished the rest of the chocolate mousse.

The next morning, I learned that it is apparently possible to have a chocolate mousse hangover.

After some more wackiness, I'm finally on the couch watching Ferris Bueller's Day Off with [livejournal.com profile] azrhey. Pretty awesome, all in all!
pphaneuf: (Default)
So, there finally was proper partying at our place, which was quite the housewarming! Thanks to our guests for an awesome evening!


Crane Lifting a Jackhammer
Originally uploaded by Pierre Phaneuf.
Some people were a bit incredulous of the, uh, interesting method that the demolition crew has been using on the other buildings of our complex, but you can see a picture of them in action right here. No one seems to have been hurt up to now, but when swinging a jackhammer from a crane, it can't be too long...

I discovered that a new add-on to our garbage can that [livejournal.com profile] azrhey picked up shares a trait with Superman: it gains its powers from the Sun! Add that to the list of our home appliances that are candidates to take over the world.

After hosting a gaming night (we don't stop for nuthin'!), now it's one of those times where we stuff ourselves with chocolate and other things, as [livejournal.com profile] azrhey's parents, my mom and my sister come to visit. Hopefully, our toaster oven won't kill them or something...
pphaneuf: (Default)
In case you forgot, daylight savings aren't only a huge pain in the ass, but also a big waste of money. That's $8.6 millions for Indiana only.

Just the amount I'd save on Advils would be worth it for me.

No Good

Feb. 13th, 2008 10:59 am
pphaneuf: (Default)
I just want to go hide in a cave.
pphaneuf: (Enlightened)
Went and visited [livejournal.com profile] morethanreal in San Francisco this weekend. Saw [livejournal.com profile] jbdeboer and met [livejournal.com profile] quikchange, then proceeded to go to someone's housewarming party.

The next day, we were joined by another Waterloo alumni for some Ethiopian food, then went to Good Vibrations (which happens to be a few streets away from my host). I did a little bit of wandering around in the Mission district, as [livejournal.com profile] morethanreal had to go back home to take care of some, uh, "routing problem" with her toilet, which started dumping stuff in her backyard. I checked out some cool bikes at Freewheel and I went to Ritual for some of the best latte I ever had. After rejoining the group, there was some good discussion about music (despite my host starting to lose her voice!), and obligatory exchanges of music.

On the Sunday, we headed out downtown for a walk, going to the Bluebottle for breakfast and coffee, only to be blown away once more by excellent coffee. The mocha was neither sweet, nor bitter, just chocolatey, I don't think I've ever had it that good! We stopped by the Apple store there, where I resisted getting myself an iPod touch. I got some cool postcards, then we went down by the Bay and pondered the awesomeness of various cities, and mutually recognized that we both made fine choices.

After that, she left me to my own devices, as [livejournal.com profile] quikchange had left his iPhone at her place and they were to meet so that he could get his life back. So I wandered back up Market Street and toured the Crate & Barrel store there. Damn it, I like a solid half of their stuff, and I'd be fine with just about any of their glasses! Argh.

After that, I waltzed around the Apple store some more, having some time to kill. Turns out my willpower couldn't sustain another session of gawking, and I got myself an iPod touch. I would have liked an iPhone, having seen just about everyone here have one and them being so damn handy, but I don't want to deal with unlocking/jailbreaking, and even if I did, the data rates in Canada would kill me dead. The iPod touch is quite incredibly useful still, especially if you're in an area well covered with wifi (Mountain View is ridiculously well covered, and thanks to our friends at Île Sans Fil, Montréal isn't doing too bad either).

While I was at the Apple store, [livejournal.com profile] morethanreal texted me (she had no voice at this point!) to let me know that I forgot my glasses at her place! So plans were made to meet again, and I got together with [livejournal.com profile] jbdeboer, [livejournal.com profile] quikchange and her again at an indian restaurant near the Caltrain station. There, I finally figured out what the purpose of a mysterious piece of plastic included with the iPod was, just as I was starting to put into question my mental capacities.

In the beginning of the week, I went and did this. I accomplished one of my childhood dreams: ride the Disneyland Monorail System. What can I say? I'm a geek, you all knew that, right?

Not only that, but on the Friday, I accomplished another of my childhood dreams: I visited the Computer History Museum, which I had been wanting to see ever since I read about it in Softalk Magazine (which stopped printing in 1984, so you have an idea for how long I've been wanting this!).

I saw the first hard drive, a panel from the ENIAC, a cog from Colossus (the biggest part in existence), more than one Cray, a PDP-1 in working condition (you can play SPACEWAR on it on certain days!), a Thinking Machine CM-1, a VAX, a KL-10, and so many other things.

At the end, I was at the brink of tears. I am not kidding. I was facing a wall of micro-computers, with an Apple IIgs very similar to the one that is still in my mother's basement on one of the shelves, a few NeXT machines (which I wanted to try out ever since I read about it in inCider magazine, and led me to learning some Objective-C, using Window Maker and eventually getting myself a Mac OS X machine), a Lisa (there was one in my high school), many other variants of Apple II (what I wrote my first program on, at six years old), an original Mac (I remember seeing my first one, and while I scoffed at their B&W display, I couldn't refute that this was going to be the future), a boxed Tetris for Mac (the first version of Tetris I ever played, while being on detention, on one of my high school's secretaries Mac)... I was surrounded by the work of people so obviously insane, as most of them wouldn't have even considered trying these things, and could feel the pure passion of the place. Just think of Seymour Cray, who built the prototype of one of his first supercomputer out of chips that didn't pass the quality assurance testing of the factory, working around the defects as he could, and still succeeding. Amazing.

To make sure my head completely exploded, after the TGIF today, I started talking with another Noogler who turned out not only to be the author of a piece of software I highly respect, but also knew what an SX-series supercomputer was, having had worked on the competing systems. Then we were joined by someone who helped free Mozilla, who's also still a Noogler, at which point the discussion veered toward the education of developers, hiring, and how hard it is nowadays. Which then had Larry Page join us, and listen.

I think I'm having a Koolaid overdose here, but still, it's safe to say that this has been one damned wacky fortnight.

February 2016

S M T W T F S
 123456
7891011 1213
14151617181920
21222324252627
2829     

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 23rd, 2017 10:39 pm
Powered by Dreamwidth Studios