White House

After a rather long set of flights, with a moderate amount of hassle and too-long layovers (7 hours in London… just too little time to be able to spend any time in the city, so we slept instead), we arrived in Casablanca last night.

In the airport, we were immediately set upon by what I thought were people working on commission for hotels and cabs, but were guides in hindsight. The one the more persistently glommed on was a character from central casting, Hasan (the first of 3 Hasans we would meet last night). He recommended a hotel, and I went over to a policeman to see if he could tell me what normal prices were. There we met a voluable Tunisian, Abdul, who had missed his flight back to Scotland, and came along with us.

Hotel Guynemer ended up having more character than an Ibis, but that’s where Hasan started asking for money. I got irritated, because like I said, I hadn’t known he was a guide. But Abdul smoothed things over, and commissioned HAsan himself (though I ended up paying for dinner and drinks at the hotel).

Afterwards, we walked around the town a little, and went to a sort of variety club, with rotating singers (and dancing and ululating patrons) and hookahs. My girlfriend and I went home early, around 2 AM, but Abdul knocked on our door around 5 AM (to ask us if we were asleep), so he was out late. I hope he didn’t miss his flight again.

Hasan was downstairs again today, but we didn’t want to go shopping, so he split. We’re going to check out a mosque and a cathedral, then head out to Marrakech tonight. I’m sure there’s a Rick’s Bar here in Casa, but we’ll have to give it a miss this trip.

We’re Off on the Road to Morocco…

My sweetie and I are heading to Morocco! I have a W3C WebAPI Working Group F2F (face-to-face meeting) in Rabat, Morocco, and then an SVG WG F2F in Prague. How often am I going to get a chance to go to Morocco? So we decided to bookend some vacation on either side of it. We leave tomorrow (with layovers in NYC and London), and will spend some time in Casablanca, then travel to Marrakesh, then Fez, then on to Rabat. I believe that this is the first W3C meeting held on African soil.

We’ll be travelling for almost 3 weeks, returning October 2. Luckily, a good friend has volunteered to mind our house, feed the fish, and water the flowers in case it gets too dry.

I’m pretty excited. I’ve never been to either place (though I was once in Bratislava, pretty close to Prague). Also, this marks Continent #5 for me: I went to Japan in the Fall of 2004, and we travelled around Australia earlier this year. I’ve been to Europe a few times now, as has my girlfriend (though she’s not yet been to Asia, so it’s only Continent #4 for her). Now I only have to get down to South America and Antarctica, and I’ll have visited every continent on Earth! This is a silly little goal of mine. I’d also like to visit sub-Saharan Africa (aka “Real Africa”) and India, my favorite sub-continent. But that’s all far in the future… tomorrow, we fly to Morocco!

We certainly do get around! (Like a Webster’s dictionary, we’re Morocco-bound).

Still Unpacking…

About a month ago, we bought a house (a nice sunny one, with a little pond out back). When we moved in, we noticed how cheap, sparse, and generally inadequate all our furniture was. It looked fine back in our rental…

We’ve since picked up some more/better furniture, some at yard sales, some through friends, and some at stores.  Much of it is temporary, but it will serve until we can afford to incrementally replace it with stuff we really like.  It’s looking a bit better, but there’s still another pressing issue.

Despite the diligence of my girlfriend (and as a direct consequence of my own lazi-/busy-ness), we are still living out of boxes, stepping around boxes, and just generally using boxes as our main decorative motif. Our screened-in porch, a feature we’d hoped to use for evening dining and daytime lounging, sadly became a storage facility. But no more! Today, we motivated ourselves to clear it out, and we are putting up the funky retro 70s table, chairs, and bench that she got years ago for $50 and never had a place to use. It’s cast-iron and lime pleather and wood (and something made to resemble wood), and I think that it will be a nice accent to a house built in a rather late-70s style. Disclaimer: make no mistake, I lived through the 70s, and have no nostalgia for the hideous styles that oozed out of the drug-addled minds of designers of that era. But there’s no denying it, this house has touches of that time. But in a good way!

So this weekend, in addition to my finishing up some critical stuff for work, we plan to get this place is some sort of presentable order. Just in time for our trip abroad.

What is it, this SVG?

I’m going to be writing a lot about SVG, so I thought I’d give some explanation as to just what it is. Scalable Vector Graphics is an XML language for creating graphics. It’s a bit like HTML for images. If you want to draw a circle on your page, you type:

<circle cx="50" cy="35" cx="20" fill="blue" />

And then you have a blue circle with a radius of 20 pixels (more on that in some later post), centered 50 pixels from the left and 35 pixels from the top. Obviously, since people want to draw more than just circles, it gets a lot more complicated than that, but that’s the basic idea. SVG is a vector-based language, which means that rather than a collection of dots, like raster images (rasters are formats like bitmaps, JPEGs, etc.), SVG shapes are sets of instructions that tell the browser how to best draw the image. For instance, a line in a raster is just a series of unconnected dots… if you zoom in on it, that’s what it breaks down into; but an SVG line tells the browser to start at this point and go to that point, and so no matter how you zoom in or out, it remains a smooth, solid line. Each image is composed of a number of shapes, or elements, that have identities and properties. If you move your mouse over an element, or click on it, the browser knows about it, and the author can give instructions (either using script or something called declarative programming) for what to do… it might let you drag the shape, or change its color, or most anything else you want.

SVG is an open format, meaning anyone can make a browser or an authoring tool that uses it without having to pay any royalties. This sets it apart from similar technologies like Adobe Flash and Microsoft XAML. (I strongly believe in open standards, because it gives everyone a chance to control the future of the format; specifically, I think that all democratic governments should use open standards as much as possible, rather than rely on one company who can control the costs and future access to the information stored in their format.) And the fact that it’s open pays off. SVG is supported natively in Firefox, Opera, Safari, and other browsers for both the desktop and mobile devices. Right now, it is not supported natively in Internet Explorer, but you can get a plug-in for that (see later posts for updates on this). No other vector format is natively supported across so many browsers.

SVG can be simple and free to author. There are several good programs that let you draw images and save them as SVG, including Adobe Illustrator and Inkscape (a free drawing app that works on most platforms). But if you want to get your hands dirty, you can dig in and create shapes just by typing out the code; this is how most programmers tend to do it, because it lets you control how the drawing behaves according to scripted instructions. If you want to see how someone drew an image, you can always view the source code and, if permitted, create or change it to suit your needs, just as many people learn HTML and Javascript.

But SVG is not just shapes. Because it is intended to allow rich presentations in an accessible way, you can also use text in SVG, and even define your own fonts (though this is not yet as widely supported). Animation is native to the language, and in later versions (such as ones shipping on phones), audio and video are also available.

Finally, SVG can be used with HTML, to create a rich Internet document. Because it was designed from the ground up to be used with other languages (including styling languages like CSS and XSL), as well as on its own, it is truly a part of the Web, and as it grows more popular, the possibilities of the Web will grow even more.

Not Invented Here

I’ve been accused more than once of “reinventing the wheel.” Let me assure you that that’s meant to be a stinging insult among programmers, where reuse is the key to efficiency and laziness (both qualities I admire).

But sometimes the wheel is broken, and sometimes it just doesn’t work right for the job at hand. I wouldn’t want to drive a car with a solid-body fixed-axle wheel.

And sometimes, you have to reexamine your basic assumptions. Maybe the wheel isn’t the right tool for the job at all.

I don’t want to reinvent the wheel. I want to reinvent fire.