Home
Weblog

Some things about Google

Posted by Simon on March 31, 2008 at 01:01 AM

The Lost Google Tapes

Somehow I missed this way back in 2006 when it came out, The Lost Google Tapes. These are tapes recorded early in google's history, well, 2000-ish, by a reporter doing a story on google. He got the founders, etc. etc on tape. The tapes got released on the net as podcasts in 2006. The recording quality is TERRIBLE, but if you denoise it and EQ using Amadeus Pro or similar software on windows or linux (Audacity?) you can hear what's going on pretty well. I'd post modified version but I'm not sure if that would be legal, let me know what you think...

Well, it's fascinating to hear these voices from the past. It's a bit like being a fly on the wall.

Tools that Google Uses Internally

Google did a webcast earlier this year about their internal tools. It was posted for a while and then unfortunately removed. But, you can still see summaries: The Tools Google Uses Internally (includes screenshots), Innovation@Google 2008 Event Notes, and A glimpse inside Google's secret sauce (also has screenshots).

Generally speaking it looks like a pretty well thought out set of collaboration tools, helping to reinforce a company wide policy of distributed intelligence and innovation.

Comments: 0 (view/add your own) Tags: (none)

ruby rocks, python not

Posted by Simon on March 18, 2008 at 09:54 PM

So I'm just doing some python programming, just a few hours, and already I'm missin' ruby.

python dictionary, is a certain key set?
if self.params['foo']:

oh no, that's won't work. Hmm... How about
if defined(self.params['foo'])

Nope... no such luck, there's NO WAY to find out if a variable is defined in python. Finally after futzking around online I find out that the ONLY way to do it reliably in any situation is to—get this—catch an exception. Except since I'm dealing with a dictionary I can use this (undocumented) method:
if self.params.has_key('foo'):

That's so lame. In ruby, you can do any of these:
if @params['foo']
if @params['foo'].nil?
if defined? @params['foo']

Speaking of which, now that I get it, the @foo syntax for an instance variable (stupidly called a "data attribute" in python) is great. So much more obvious & compact than self.foo.

Python also forces you to do some things that I have happily adapted to giving up in ruby. Like calling functions without brackets, isn't
defined? @params
so much prettier than
defined?(@params)

Yes it is. And also, I've started naming my functions with ?s if they yield a boolean and ! if they make a change in place or generally perform a destructive edit—nice.

And ruby's blocks—I love you!

      download = Download.new do |d|

d.user = @user
d.name = my_name
end


And unless and the if/unless modifiers... I could go on forever. Why don't you read the insane book?

audiophile

Posted by Simon on March 08, 2008 at 11:27 PM

I've been blogging lately about things that have nothing to do with Semacode. That will change very soon. So, if you're not interested in talk about Wired, awesome video, or whatever, don't unsubscribe because pretty soon there will be some very excellent news on the subject of mobile phones, barcode scanning, and all of that. Semacode has been working behind the scenes on all kinds of nifty stuff, and we'll be revealing some of it real soon now.

Anyway, not today.

I bought a pair of AudioEngine 5 speakers last summer. Actually they were an awesome gift from my sister. I got them because I needed something to play the music from the N95 that I knew I was going to be getting. I've never owned an iPod.

Anyway, I got these speakers and I happened to mention it to this friend of mine who plays in the same wind ensemble that I play in. And it turns out that he's getting seriously into the audiophile thing. At first I thought it was a bit funny. I mean, everyone laughs at audiophiles right? They waste enormous amounts of money, like $10000 on a CD player or whatever, what a joke. Well, to start off with my buddy was not wasting a lot of money, he was actually buying a lot of used gear at very reasonable prices. And secondly, the AudioEngine speakers that I got had completely and utterly changed my perception of what good audio can sound like (at only $350!).

What happened was, I plugged them into my Airport Extreme, set the volume to what seemed like a good setting (about "7" if it had numbers) and played Spinning Wheel by Blood Sweat and Tears on my laptop. What came out was a wall of mindblowing brass. It was SO LOUD but SO PERFECT. It was like suddenly BS&T was in my living room blasting their lungs out. I was totally blown away.

So aside from the fact that a lot of people with more money than sense waste it on extremely expensive audio gear, there is actually a point to audiophile. The point is that normal audio gear, for a variety of reasons, does a really craptacular job of rendering sound.

At one end, there is (usually) a live source of music, which is carefully microphoned and mixed by a professional who has one of two goals, either to exactly reproduce the live sound, or to anyway make it sound really good.

At the other end, there is your speakers, which make reproduction. The goal of the audiophile is for the reproduction so much like the original that it's like you're really there, hearing what the professional wants you to hear. It's just the same as comparing a cheap $10 print of Van Gogh, with a $150 art print, to the real thing.

That's what you are missing. It is in fact possible, on a relatively modest budget, to be able to hear very close to what it originally sounded like. Like being at a live performance. It CAN sound that good, that loud, that quiet. Audiophiles talk about the "soundstage" which means, how well does the output match the original spatially, if a particular instrument was on the right, does it sound like it's on the right now? They also talk about resolution. How exactly does the reproduction pinpoint the source of that sound within the space. There's dynamic range—the quiets and the louds—just like video, are the blacks really black and the brights really bright. Can the reproduction hit the same volume as the original without distorting the sound. And so on.

With a good set up there's simply more there, there. You can hear more music in a recording you previously thought you already knew. A tired analogy is that you can close your eyes and imagine more easily that you're on the balcony or on the floor and pick out the locations of each of the instruments, forget you are in the living room and feeling like you're in the concert hall/club.

Well anyway, that's just a start. Digital is a huge advance (and cost savings because moving bits around without loss is dead easy). So you can forget about worrying about a lot of the stuff in the middle of the chain and focus on three important things:

1. The quality of your digital to analog conversion (DAC)

2. The quality of your amps

3. The quality of your speakers.

In my case, based on the research I've done, the DAC in the AX is supposed to be pretty decent, better than the DAC in an iPod or built-into a Mac or PC. And since the AudioEngine 5s are self-powered, they include both amps and speakers, making that easy too. I know that I can (and probably will) build a much better system, starting with the DAC, which turns out to be a lot harder to get right than you might think (analog is always such a pain in the ass you know? Why can't we have digital speakers???).

Anyway, enough for now.

Comments: 0 (view/add your own) Tags: (none)

the best web user experience on the planet

Posted by Simon on March 05, 2008 at 01:10 AM

Facebook. Oh I know, it's not multi-coloured, it's not in your face, it's not made by 37signals or anything like that. It's just GOOD. Facebook actually uses every trick in the book—including drag and drop for God's sake—but you don't even notice. There is so much information going by on the average user's screen that they manage to attain an insane information density without driving users up the wall. Their layout it simple and elegant. They manage to integrate tons of third party applications made by a variety of people with no design sense, seamlessly into the overall system. They give you tons of notices and they are visible without being spammy. They are changing and updating all the time. They let the content do the talking.

But all people do is complain.

Comments: 0 (view/add your own) Tags: (none)

remember Wired 1.1?

Posted by Simon on February 16, 2008 at 03:41 PM

OK, chances are reasonably good that you don't, because a lot of you were 8 or something when it came out. I'm talking about WIRED MAGAZINE, the most amazingly amazing thing to ever hit the newsstands. I was a teenager working at a multimedia lab at at a newspaper when it hit. It blew me away. Here it is in all its glory.

Yes, I played an "MMORPG" called MicroMUSE years before the term MMORPG was invented. I actually was messing around (believe it or not) on a VAX VMS system that I had access to because my father was a sort of associate associate professor. Then SunOS I think.

I think I shared with WIRED that I completely missed the boat on the Mosaic browser. I mean, I tried it, but there was nothing on the web to look at. Not even Yahoo! or a search engine. I didn't really get into it until Netscape came out.

But those old WIRED issues were pure magic. Mind expanding. A few years or two in they became boring and corporate, but initially reading it was like having your brain plugged directly into the heart of silicon valley & San Francisco crazy culture.

They always started out with multi-page picture spreads like this one:

wired front pages spread

What a glorious waste of pages!

Comments: 0 (view/add your own) Tags: (none)

How did I miss this?

Posted by Simon on February 14, 2008 at 01:25 AM

Why’s (Poignant) Guide to Ruby. It reads like it was written by an emu on acid, or maybe Douglas Adams's long-lost and insane brother. But anyway, it's a very enlightening (and light) book about ruby. I think it may have been intended for first-time programmers, but it's hard to say for sure. I find the pace is fine, and it's definitely expanding my mind and making me understand some of the different ruby syntax I've been seeing all last year.

Another thing that I missed somehow last year, is SCPlugin for Mac OS X. It's just like TortoiseSVN, except for Mac. Whoo hoo! I remember spending a lot of time last year looking for good SVN client for mac and not finding one (well, SmartSVN is survivable). I think at that point SCPlugin haven't quite made it to prime time yet. I looked again just now, and there it is.

By the way, I do all of my Rails work in oXygen. I realize that it's an XML editor primarily, and that everyone else uses TextMate but I don't like TextMate. It's too programmable. And the first time I installed it it took over every single file on my file system. oXygen is easy to use, has awesome XML/XHTML formatting tools, and I'm a dedicated CSS/XHTML hand coder.

Comments: 0 (view/add your own) Tags: (none)

How Dell makes money

Posted by Simon on January 31, 2008 at 10:15 PM

(Inspired by Living in Dell Time)

Dell has a very, very smart way to make money. This proves that it takes intelligence to find a good business model and to make it work. I call this business design.

Normally computer companies maintain inventory. They stock up on parts, assemble computers, and then sell them. Once you buy it, it comes off the shelf in a warehouse and gets shipped to your door.

Not Dell. They don't build, they don't even buy the parts, until AFTER you purchase. When you click the buy button, they have nothing but air in their warehouse. Only after they have your money do they supply and assemble and ship.

Think about stock, it's dead weight. As soon as you have stock, you are losing money. Stock costs money to buy, and you don't get the money back until you sell it. Even assuming that you sell all your stock, you have two problems. (1) cash flow, and (2) interest.

First you have to have to have a float of cash which you probably borrowed or raised for equity from someone. Getting that cash float and maintaining it is a pain in the ass. Secondly, you have to pay interest on the cash until you sell your stock and get it back. Imagine if you could instead invest that money at market rates for whatever your stock turnover time is. You could make maybe 5%, maybe better. If your stock is worth millions, that adds up!

So stock is expensive. Now Dell turns that around, instead, they get your money first, and pay for the goods later. In fact, as of 2004 Dell was paying for their goods something like negative 10 days after they paid for them. Most companies would be happy to be paid reliably within 30 days after.

Comments: 1 (view/add your own) Tags: (none)

Digital Cinema

Posted by Simon on January 26, 2008 at 03:28 PM

This is a bit more of an in-depth article than I've written before. I hope you enjoy it.

I've been researching digital video/cinema partly because I'm curious and partly because I want to build a really kick ass digital home theatre at home. Obviously it has to be 1080p HD. But there's a digital cinema company in Waterloo, Christie Digital, that donated a very high end projector to the Accelerator Centre, with more than 1080p resolution. And, I enjoy reading about how movies are made, and I started to realize that film has a higher practical resolution than 1080p.

A review of Curse of the Were Rabbit in American Cinematographer mentions that they scanned their film at "6K" resolution. That's 6000 pixels wide, three times the width of 1080p, equivalent to an 18 megapixel camera photo for each frame. But can you go higher? Apparently, yes. According to this article filmmakers consider 16K to be adequate. 16K! Awesome!

To put in perspective, the storage required to store that is 21GB per second. It kind of starts to sound like gigapixel imaging, although realistically (a) your eyes can't possibly see all the detail in a gigapixel image anyway and (b) film cannot possibly get the same detail level as a proper gigapixel image.

To go to the perfect digital cinema system, though, resolution alone is not enough. You also need to be able to reproduce, in each pixel, the full dynamic range of light that exists in the real world.

HDR photography is a lame attempt to achieve this. It works like this: you take several photos at different f-stops, recording the brights, the mids, and the darks onto separate digital photos. Then, you use software to selectively compose these multiple photos into a single image. What you get is something that looks completely artificial but allows you to see details in the brights and the shadows that would otherwise be washed out.

More advanced HDR capture uses a single sensor that can simultaneously capture the wide dynamic range of the human eye. Normal digital sensors only record at a bit depth of 8 bits of luminescence per pixel. Waterloo digital cinema company Dalsa has a 4K "Origin" camera that records at 16 bits per pixel depth. That's much closer to the actual perceptive capabilities of the human eye.

You could fix the lame-ness if you could find a way to then display at that bit depth. But no commercial displays can do that yet. Even hyped products like Sony's 1 million to 1 ratio OLED cannot actually come close to the brightness of the real world, because the maximum brightness of the display is only about 600 nits (cd/m2).

Comparatively speaking, maximum direct sunlight is 100,000 lux. Lux and nits are related (oddly enough) by a factor of pi, so 1 nit is equal to 3.14 lux, if the surface being illuminated is perfectly white. (Lux is light cast on something, nits are light cast by something.) 600 nits is nowhere near bright enough to match the daylight it's trying to represent.

Dolby recently bought some interesting technology called BrightSide which can display at 3000 nits, equivalent to decent daylight. You can see the effect in photos that show the old vs. new technology on a side by side basis. There's an image below with an LCD TV on the left and a BrightSide demo on the right from an article by Geoff Richards.


brightside vs LCD


To conclude. 1080p is pretty damned good for now, equivalent to 2K cinema. I'm probably going to aim for whatever is the brightest screen I can get, but I'll definitely be looking forward to seeing something like BrightSide display technology to be available as soon as possible, because I think it will make a huge difference to the viewing experience—make the picture much more like the real world.

[Update: I was thinking that 16K might not actually be enough to ultimately satisfy the human eye. 16K = about 100 megapixels. But these calculations about the human eye make me think that would probably be enough actually. It would really be a question about how much field of vision you want to fill, and the more you fill, the more the eye has to move around to see it all. So 16K would probably be satisfactory for a movie where you would expect to have a reasonably focused field of attention.]

[Update 2: Good god, I've just discovered that there's also a framerate issue. What happens if you are showing a "24p" (24 frames per second) movie on a display that always has to work at 30ftp, like any NTSC TV? They do something called "pulldown" (repeat some frames) or play other tricks. I don't completely understand what these tricks accomplish (3:2 or 5:5 pulldown?) or what exactly the "film look" is (something to do with shutters?), but it seems to me that if you want to have a proper home cinema you should display what the moviemaker intended you to see. It would appear that I'll need to pay attention to frame rate issues to make sure I get that.]

Comments: 0 (view/add your own) Tags: (none)

8 Ways to drive a Graphic Designer mad

Posted by Simon on January 24, 2008 at 01:31 AM

8 Ways to drive a Graphic Designer mad. Oh wow, this is funny. Some people I know might benefit from reading this articles. Others might see their lives scarily reflected back at them.

Via The Cartoonist.

Uh oh, I've been tagged. Now I have to think of 8 things you don't know about me. There's the number 8 again. That's synchronicity.

Comments: 0 (view/add your own) Tags: (none)

Me on a segway @ DLD2007

Posted by Simon on January 22, 2008 at 09:08 PM

me on a segway



When I was at DLD last year Google provided the segways. I've been waiting to start blogging again to show off this picture, because I was so good at the segway, you know they say people always fall off them but I was going good right away. And man, it was fun. When I'm filthy rich this will one of the toys I buy.

Comments: 2 (view/add your own) Tags: (none)

We just applied some RewriteEngine voodoo

Posted by Simon on January 21, 2008 at 10:06 AM

So that the old weblog archives can be easily accessed here:
http://semacode.org/weblog/archive. All the way back to 2002!

And you can view the archives of the current incarnation of the blog as well.

Comments: 0 (view/add your own) Tags: (none)

Great free software / freeware for the Nokia N95

Posted by Simon on January 08, 2008 at 08:09 PM

Here's a list of all of the software I have added to my phone, all of which (so far) is free or in trial mode. Each one adds quite a bit to the phone's capabilities. Not only is there lots of free software out there if you can only find it (I spent days finding all this stuff), but there's a growing list of Open Source software as well. A lot of it is being written in python, which is SO much easier to program for S60.

And don't forget to upgrade your firmware to get new capabilities and a faster phone! (See bottom) No matter how recently you bought it, it probably doesn't have the latest software update yet.

[Update: see the comments, and also I forgot: Nokia's accelerometer kit and the cool software that uses it, truphone for totally integrated VoIP over WiFi, a great minimalist theme, and the Python kit. I'll post more about them later.]

Free Software (open source)

  • Frozen Bubble - a popular puzzle game ported from Linux. Nifty. How fast can you get to level 100? (You can save games...)
  • LogExport - I haven't used it yet, but it gives you a spreadsheet for your phone usage (call logs etc.) and that sounds useful.
  • MobileGTD - "Getting Things Done" app basically helps you manage your todo lists, projects, and so on. Written in python, I think this is the future of a lot of open source S60 development.
  • MidpSSH - a nice Free SSH client. Unfortunately, because it's Java, it's impossible to use it as a SCP client. In fact there doesn't seem to be an SCP client for S60/N95, bummer. (I use WebDAV over HTTPS to access my files securely, but it's read-only.)

Free software from large companies

  • Opera Mini - a fantastic browser, although you don't really need it on the N95 because it has a good browser built in. Opera Mini probably reduces your data usage substantially though. On the downside, there's no HTTPS (secure connections) because the opera mini server unpacks the data and streamlines it before sending it to you.
  • Google Maps - this is a great app, because it has satellite photos built in and also it can give you a rough position when you are inside using cell tower IDs. It also has location based search, but the location based search on the built in GPS software seems to be just as good or better.

Freeware

  • Calcium - a really nifty calculator with an innovative interface. Definitely a must-have.
  • SExplorer - a file system browser that gives you access to the WHOLE file system, not just the limited bits that the built-in explorer can show.
  • Nokia Sports Tracker - a very useful program from Nokia Labs, it uses the GPS to track your sports activities such as walking, hiking, jogging, etc. You can view graphs of your speed vs. time, and other things, and export the route you took to Google Earth.
  • S-Tris 2 - a Tetris clone, very well done and faithful to the original. Which is all I want in a tetris app. No crazy "3D tetris" please.

Commercial software with free trials

  • Opera Mobile - I'm going to try this out in case it's better than the built-in browser. The built-in browser is very capable, impressively so, but. It has a few annoying "features". 1) No way to save passwords for HTTP authenticated sites. 2) Doesn't remember my zoom level (I like 75%). 3) No way to delete some annoying folders in the bookmarks manager. 1 month free trial.
  • Salling Clicker - total remote control over your Mac or PC. Slick interface. Works over Bluetooth, WiFi, whatever. Run presentations, control iTunes, and many other apps. Very cool. Paid version adds more features.
  • Lament Island (click "try") - wow, this is a cool game, quite sophisticated level of 3D graphics (maybe like original Tomb Raider) and an extensive story-line. By Chinese company Simlife. Here's a YouTube video preview.

Free firmware updates

  • Nokia Software Update has just released the v15 firmware for my 8GB and it adds some cool stuff, notably more speed, a video editor, and support for Flash Video (e.g. YouTube). Nice. You can only update from a PC, which is super annoying. Also, be sure to backup before you update though. Why, Nokia, can't you make this process easier???
Comments: 7 (view/add your own) Tags: (none)

A couple of notes on the N95 for Mac users

Posted by Simon on January 01, 2008 at 04:29 PM

If you use Nokia Multimedia Transfer (NMT) and open the Nokia Device Browser, it will synchronize all of the files on your phone into a cache on your computer. The cached files are located in ~/Library/Caches/com.nokia.NokiaMultimediaTransfer/Devices/###/, so you can browse them while the phone is unplugged.

NMT synchronizes with iTunes, but doesn't transfer album cover art that's been downloaded automatically by iTunes. Apparently iTunes stores the art in a database rather than in the ID3 tags as you'd normally expect. In order to have the album covers on your phone, you can use this simple AppleScript to embed iTunes cover art into the files. This works for any N-Series phone, and other devices like Zune etc as well.

Once you install it, select all of your songs in iTunes and go the AppleScript menu and "Embed artwork" it will do the rest automatically.

Apparently another app called Corripio will do something similar but I haven't tried it.

Comments: 0 (view/add your own) Tags: (none)

Messing around with the N95 8GB video camera

Posted by Simon on December 21, 2007 at 07:40 PM

Kathy & Gary Will at the Accelerator Centre today.



First YouTube post!

This is from tuesday after the big snowstorm:



I tried to videotape and run the GPS at the same time today so you could hear the cool english accented lady driving instructions (in 100 meters, enter the motorway). But the GPS voice turned off while I was filming :-(

Comments: 0 (view/add your own) Tags: video

For some reason Java doesn't have a very good reputation. Java EE is a total hash. Don't even go near it. Java SE is kind of mixed. Yes, it works in the sense that you can write GUI apps that run on Linux, Windows, and Mac. But. It will look ugly on all platforms. It will be slow on all platforms. It will make your processor overheat.

On the other hand, all the cool kids use it. No, wait, they're using Ruby now. Well, anyway, the schools are teaching in Java. It kind of mostly does most of the things you need for decent OO. There's TONS of open source code out there to do everything you want. Apache turns out boatloads of the stuff. There's libraries to do everything. The syntax is easy to use, blah blah blah. But still. Slow & ugly.

The thing is, that Java was originally written to run on embedded devices, way back when it was called Oak or Elm or some kind of tree anyway. That's why it has all this crazy security sandbox stuff built in. And today, the one place where Java really, really shines is in embedded devices - specifically on mobile phones.

Java ME is great. It does just what it needs to do. Sure you're inside a sandbox and you can't steal the user's private information and send it back to your server. But that's a GOOD thing. I don't want you to write your app to record every single one of my conversations without my knowledge. A mobile phone is a very personal place. Have you ever noticed that people will loan their computers but not their phones? It's a personal device.

Anyway, Java ME has just the right feature set. Unlike SE and EE there aren't a gazillion different APIs, there's a small set and if you really need some function they don't provide, maybe you shouldn't be doing that anyway. Or you can snag it from open source. I love the way that they restrict your choices in so many ways. Want to load a URL into a specific application on the phone? You can't. All you get is platformRequest() and the phone decides what to do with it. I like that, especially since the phones are getting a lot smarter about what they can handle.

I don't know, to me, Java ME has just the right amount of stuff in it. Not too big, not too small. Just right.

NB, I'm going to experiment with allowing comments. Believe it or not, I've been blogging for SEVEN years and I've never allowed comments before.

Comments: 4 (view/add your own) Tags: (none)

Still trucking

Posted by Simon on December 06, 2007 at 09:09 PM

It's been a while since I blogged here! There's buckets of stuff going on at Semacode Corporation but nothing I can talk about right now. I've entered the stealth zone! However I can say that We Are Hiring (must be willing to live in Waterloo)!

I just ordered a Nokia N95 8GB. What can I say, I'm very excited. Yes, I know I've already messed around with it plenty but I'm excited about actually owning one. For whatever reason I've refused to purchase an iPod forever (who wants to carry two devices) and so the N95 will be the first all-in-one device that I actually get to carry around all the time. And travel with. Etc. I guess one of my fears though is that I will become the kind of blackberry zombie who's always checking his emails, interrupting meetings to answer emails, etc., etc. I'll have to not do that.

Oh yeah, and as for the iPhone? I don't know ... I just don't like that touchscreen, and the sliding effect when you switch photos and stuff makes me sea-sick. So no go with that one (as expected).

Is Ruby on Rails the best thing ever or what? I've been doing some web sites on the side and it's so fast and productive. I'm re-educating myself. The last time I did serious web programming was pre Web 2.0. Back when XML was the Best Thing Ever. Only 2 years ago. Now Javascript has grown up and we have wonderful things like Prototype and the unobtrusive technique. And firebug, cool! Making interactive websites is so much more fun now.

Here's a useful collection of visual design patterns for websites. Good for when you're trying to decide just what your login box should look like.

Comments: 2 (view/add your own) Tags: (none)

Old posts are still online

Posted by Simon on December 05, 2007 at 09:00 AM

Comments: 0 (view/add your own) Tags: (none)