Sometimes boredom and a limited selection of ingredients can lead to something tasty. My dinner this evening left me a somewhat under satiated and scanning the fridge revealed not much more that 2/3 can of chickpeas. Hmmm.... Hummus!!!
Note that you will not see salt in the ingredients. I used white miso which imparted a subtle richness along with the salinity that was required.
Ingredients (all measurements approximate, use your taste and judgement)
- 2/3 can of drained and rinsed chickpeas
- 1 tsp sesame oil
- 2 tsp olive oil
- 1/2 onion, finely chopped
- garlic minced (obviously to taste)
- 1 tbsp white miso paste loosened in 2 tbsp water
- cayenne pepper
- 2-3 tbsp tahini
- ground black pepper to taste
Method
- Soften onions and garlic in heated sesame/olive oil
- Add the chickpeas and cook for about 5 minutes, stirring to avoid sticking
- Add the miso mixture
- Stir to coat the chickpeas and add black and cayenne pepper.
- Simmer until chickpeas are glazed and most liquid has evaporated. Let cool to body temperature before continuing to the next step.
- Add the tahini and blend with a hand blender. At this point the mixture will be very thick, add olive oil and/or water slowly until the desired consistency is reached. Olive oil will yield a richer hummus but at the expense of added fat.
At this point most recipes recommend chilling the hummus in a refrigerator until ready to serve. I found that with some residual warmth from the cooking it took on a vastly different character. I recommend you try it before cooling.
It's the beginning of the new year and that means one thing to me. It's time for the Summer Kickoff Trifecta, a trio of events throughout the Spring that culminate with the start of Summer-like outdoor activities like mountain biking, hiking, canoeing, etc.
This three day expo held in a giant hanger near the airport is a great way to kindle the summer activity excitement. While the exhibitors year to year are much the same I find it's a great opportunity to catch up with people whom I haven't spoken with for a while. I love the opportunity to pick up race schedules from all the race promoters, watch the in-pool kayak demonstrations, gawk at the promotional videos for far-off adventure travel and chat with the fellow that runs a hang/paragliding school. Maybe this year I'll try paragliding.
The annual Spring bike show returns to the CNE but this time it will be housed in a new building - The Better Living Centre. The bike show is always a great place to catch up with local and regional cycling enthusiasts, ogle the latest in bike porn and even leave with brand new steed if you happen to be in the market for one. Most of the vendors allow you to take their bikes for a short test ride in the indoor test area.
By far the best way to get stoked for the Summer (actually all year) is to attend all three days of the Banff Mountain Film Festival World Tour when it hits the Bloor Cinema at the end of March. Here's this year's trailer/teaser.
Many web developers are still using Windows XP which means they are limited to a single website instance under IIS. If you're like me you probably have a /dev folder with a child folder for each project website. When you switch focus to another project you typically fire up IIS Manager, open the properties sheet for your default website, switch to the home directory tab, type in the new path and then hit the Ok button. Sure it doesn't take too long but what if you could do all of that from a single click within Visual Studio?
The following is a short batch file that will accomplish just that. Once the batch file is added as an external tool switching websites is a click away.
@echo off
SET str=%1
SET str=%str:~1,-3%
cscript.exe "c:\Inetpub\AdminScripts\adsutil.vbs"
SET /W3SVC/1/ROOT/Path %str%
rmdir /s /q "%userprofile%\VSWebCache"
pause
- Save the batch file in a sensible location. I use C:\Program Files\tforster\utils\setIISPath.bat.
- Fire up Visual Studio (I'm using VS2008 but this should work for VS2005) and choose Tools | External Tools
- Click the Add button.
- Give the new entry a title. Mine says "Set IIS Home"
- In the Command: field enter the full path to the newly created batch file.
- Click the arrow to the right of the Arguments: field and choose $(ProjectDir)
- Click OK.
Open up a web project then choose Set IIS Home (or whatever you named your entry) from the Tools menu. Open your web browser and browse to http://localhost. You should now see your default page (assuming that you have created a default page, otherwise try http://localhost/your_special_page).
If this doesn't work for your consider the following assumptions. You may need to tweak things if your development environment differs from mine.
- My setup assumes the default http port of 80
- My web root source code is in the root of the Visual Studio project directory
- IIS admin scripts are installed to the default path c:\Inetpub\AdminScripts\adsutil.vbs.
- Open Regedit
- Navigate to HKEY_CLASSES_ROOT\Folder\shell\
- Right-click on shell and choose New Key
- Name the key "Set IIS Home" or whatever you want to see in your right-click menu
- Open the new key and double-click the (Default) String Value to edit it.
- Enter the full path to your batch file plus a space and "%L". Mine entry looks like C:\Program Files\tforster\utils\setIISPath.bat "%L"
- Click OK
- Click the Add button.
- Give the new service a title. I usually put the port I'm going to use in brackets so it's easy to remember what I'm using.
- In the Command: field enter C:\Program Files\Common Files\Microsoft Shared\DevServer\9.0\WebDev.WebServer.EXE. Check your system if you've installed Visual Studio in a location other than the default.
- Enter /port:<your_preferred_port_number> /path:"<path_to_your_project>" /vpath:"/" in the Arguments: field.
- Click OK.
- Thumbnail Service (8001)
- iPhone Service (8002)
- xyz Service (800n)
Tip: Add The Same Behaviour As A Windows Explorer Right-Click
Sometimes it's more convenient to switch default home directories from within Windows Explorer. If you're comfortable editing registry entries then try this:
Now browse to your development folder, right click a child folder containing a web project and choose Set IIS Home
Tip: Run Multiple IIS Compatible Web Servers On Windows XP
Windows XP is a great client operating system and a perfect Windows development platform except that Microsoft chose to limit the number of websites to 1. This was presumably to stop people from trying to use XP as a production server platform and thus denying Microsoft potential Windows Server licensing revenue. Microsoft reversed this behavhiour with the release of Vista but that doesn't help those of us that are still bound to XP at the office. This becomes particularly problematic when you are working with web services and need to connect your debugger to the consumer and service applications.
Anyone familiar with Visual Studio is aware of the built-in development web server. Typically hitting F5 invokes the server on a seemingly random http port. You can use the development server in conjunction with an IIS hosted site to build a development web services infrastructure. But it's annoying having to repeatedly edit web.config files to account for the different ports, not to mention that F5 starts the site in a virtual directory which is almost always different than production.
Did you know that you can invoke the development server manually? And if you can invoke it manually you can configure an external tool to do so with a single click?
I have a number of webservices that I routinely need to run on my development box. Each one has a pre-assigned port number and is root mapped, rather than hanging off virtual child directory. My Tools menu contains entries such as:
I can easily start one or more of these services, each running in a separate instance of the development web server and each can be connected to with the Visual Studio debugger. To configure your first service open Tools | External Tools
If you choose your new service from the Tools menu you should see the usual web developer icon appear in your task tray. Depending on how you have implemented your project you should be able to navigate to http://localhost:<your_port_preferred_port_number> and see your default page or service endpoint.
To connect to the running instance with the Visual Studio debugger goto Tools | Attach to Process... (or Ctrl+Alt+P), make sure the Transport is set to Default, scroll through the list of available processes until you see WebDev.WebServer.EXE. Double-click it attach. Note, if you are running multiple servers this way each will show up with the WebDev.WebServer.EXE process name. Check the title column to determine which one want to connect to.
I woke up this morning realizing that I didn't have plans to do
anything in particular.
Hello lazy Saturday. What shall I make for brunch?
Espresso to start. That means grinding up a blend of organic
and fair trade beans that I buy from Moon Bean in the market. It's always great
kick starting a weekend with a rich, high octane cup of rocket
fuel.
With my espresso in hand I par boiled several potatoes that had
been sliced into 1/2 cm rounds. Once drained they were tossed in
some olive oil, rosemary, fresh ground sea salt and pepper corns
then transferred to the oven at about 400 degrees. I knew the
potatoes would take at least 45 minutes to cook which allowed me to
enjoy the remainder of my espresso as I got caught up feeds and
tweets since I went to bed last night.
With the potatoes crisping up nicely I started grilling up a
couple of tomato steaks and got the water simmering for some
poached eggs. Lastly I toasted up some ciabatta just as everything
else simultaneously reached it's apogee of cooked perfection.
It was an epic brunch better than any I've ever had at a
restaurant. There was a dozen or so rosemary potato chips left
over which will be perfect to nibble on the rest of the afternoon
while I work on a new jQuery project.
One of my colleagues is involved with an application that is required to display thumbnails that have been created and uploaded by our users. The thumbnails come in many sizes and orientations yet still need to be displayed in a consistent fashion. I quickly whipped up a jQuery plugin called frameIt to take care of this. frameIt takes the supplied list of images and applies padding on a case by case basis to achieve the effect. You can see how the following two images have been centered and framed inside a consistently sized red box.

frameIt's default settings can be overridden to allow for full control of sizing, whitespace and border styling. An example of frameIt in use is:
$("img").frameIt({
width: 200,
height: 100,
borderColor: "#FF0000",
padding: 10,
borderStyle: "solid",
borderWidth: 1
});
Last week's SXSW
conference in Austin, TX had a panel session that was hosted by
authors of four of the leading JavaScript libraries. Each speaker
was given ten minutes plus Q&A to present a topic of particular
interest to themselves. They included:
- Nate Koechley of YUI speaking about network performance and
file loading.
- Andrew Dupont from Prototype discussing the abstraction
provided by using frameworks.
- Dojo's Becky Gibson quickly introducing the upcoming ARIA
specification.
- John Resig, creator of the awesome jQuery library talking about
performance analysis and testing techniques.
Some of the slide highlights for me where:
- Slide 44: The introduction of YUI's Loader and Get utilities
plus the "seed". Outside of the YUI dependency of course this is
supposedly a library agnostic way of combining multiple script
references on a page to a single reference. A single reference is
preferable since it requires far fewer HTTP GET requests. The YUI
utilities also include JIT loading of dependent scripts. This
means you should be able to reference that large image manipulation
script on your photo page, but not actually download it unless the
user decides to edit a picture.
- Slide 118: John Resig has written a jQuery plugin that can be
used to do deep-profiling of the JavaScript stack
- Slide 129: I had no idea there was a unit testing plugin for
FireBug
- Slide 139: This slide shows a graph of the Cost/Benefit ratio
of developing for IE6, IE7, FF3, Safari 3 and Opera 9.5. Guess
which one had the highest cost to benefit? IE6 was the worst and
FF3 the best.
- Slide 140: A screenshot of the Yahoo Graded Browser Support Chart. Although
I've seen this chart before it was particularly pertinent for me
since I'm dealing with some serious issues involving support for
Safari 2. Interestingly Safari 2 doesn't even show up on Yahoo's
chart. It also makes me think about Internet Explorer 6. Many web
developers are very quick to jump on the anti-IE6 bandwagon (I'm
guilty too) but the development community might be far better off
adopting universal support for a graded browser definition.
Because as much as IE6 is a pain in the ass to deal with, Safari 2
is an impossible nightmare!
- Slide 142: The jQuery Browser Support Grid for jQuery 1.3.
This was a frightening slide. Assuming there is no typo it tells
us that jQuery 1.3 does not support Safari 3! It does support 3.2
and the pending 4.0 release. As a result I have a task on Monday
to go through the analytics for all the projects I support to see
how many visitors are showing up with 3.0 browsers.
- Slide 147: jQuery will be debuting TestSwarm at the
end of March. It's a distributed continuous integrated testing
environment for JavaScript.
Here's yet another Twitter mashup. It doesn't offer much of value other than a cool visualization of your friends or followers. Here's my followers as of today.
Update - This particular Twitter mashup makes a separate GET request for each avatar image. This adds about 200 requests to the page. When this post is on the main blog page, with 9 other posts the total number of gets is quite high and slows the page loading speed. I've moved the actual mosaic to it's own location More...
After last weeks rant about the absolutely miserable experience
I had at Craft Burger I thought I should mention the
positively tasty sandwich I just ate from their new next door
neighbour.
Reggie's opened this past Sunday at 4:00pm and doesn't plan on
closing until Christmas day. They are advertising 24/7 service
offering gourmet sandwiches, soups, salads and extras like
poutine.
I stopped in today with Jonathan and Jeff from the office and
it's a safe bet we will be back on a regular basis.
The staff were great, full of smiles and enthusiasm, willing to
do whatever it takes to make a customer happy. Their phone system
crashed yesterday and so they couldn't offer debit. They not only
acknowledged that the lack of debit was their issue they went as
far as to suggest I take my order today and pay later at my
convenience. This exemplary attention to customer satisfaction did
not go unnoticed and more than outweighed a slight delay due to
opening week wrinkles.
I ordered the Marinated Roast Vegetable sandwich on sourdough.
I watched as they took two thick slices of sourdough, spread on a
sun dried tomato pesto and layered zucchini, peppers, eggplant,
provolone cheese. The finished product was about 3" high until it
went into the Panini press to be toasted. I also ordered the
potato leak soup after confirming that it was a vegetarian base.
In fact all their soups are made with a vegetarian base and often
free of butter and cream too. Jeff and Jonathan both ordered the
Monte Cristo with a side of French Fries.
I brought my order back to the office and it was still piping
hot (unlike my lunch from Craft Burger last week). The soup was
very good. The portion was generous and the flavour a perfect
blend of potato and leak accentuated with Tarragon. The sandwich
was fantastic. As portions go it was more than enough for a lunch
without the soup. The crisp texture of the toasted outside
complimented the softer roasted vegetables on the inside. The
vegetables themselves were properly cooked and had none of the
mushiness often found if they've been sitting around too long.
The consensus from both Jonathan and Jeff was a definite
two-thumbs-up for the Monte Cristo. However, we all agreed that
the French Fries were nothing to make a fuss of. They were not bad
just not as stellar as the sandwiches. In my opinion Sadie's still
has the best Fries in the neighbourhood.
For me the service and food experiences are already good enough
to guarantee my return visits. But the icing on the cake had to be
the price. I was fully anticipating spending at least $10 for my
sandwich given the location, hype and competition next door. I was
pleasantly surprised to discover my delicious Panini was a mere
$6.95 and the Monte Cristo only $7.95. I upped my bill by another
$2.95 ordering the daily soup. However, that turned out to be a
lot of food and more than I would normally eat.
Reggie's is definitely a great addition to the King/Bathurst
lunch scene and finally fills the soup-n-sandwich void created when
El Penco closed last year.
Sometimes I just don't feel like making much effort for dinner.
Tonight was one of those times. Yet I wasn't prepared to settle
for delivered pizza or a boring sandwich so I whipped up a souper
quick filling soup instead. The secret was Jiva Thai's
Lemongrass Galanga Sauce. It's 100% vegetarian and costs $3.99
a jar from one of the Kensington Market health food shops.
I finely chopped
- 1/2 small onion
- nickel sized piece of ginger
- 2 cloves of garlic
and softened in a tiny bit of olive oil. While the that was
cooking I coarsely chopped
- 2 organic carrots
- 1/5 head of cauliflower
- 1/2 red pepper
- 2 stalks of celery
and tossed those into the now softened onion mixture along with
a generous tablespoon of Lemongrass Galanga. I stirred that around
for about 2 minutes before adding two cups of water. The final
mixture was brought to the boil, turned down and simmered 5 more
minutes.
The end result was a delicious and filling soup that took next
to no time to make. Cleanup was a breeze too because it was a one
pot meal.
I was not paying attention when Microsoft announced last month
that POP3/SMTP support has been re-established for Hotmail. Er
Windows Live Mail or whatever the latest rebranding is.
Adding your Hotmail account to your iPhone is very
straightforward with the iPhone auto detecting all the settings.
If for some reason it does not auto detect or you're trying this on
a different device you may want to check out the Windows Live blog
post at
http://windowslivewire.spaces.live.com/blog/cns!2F7EB29B42641D59!32413.entry?sa=176162102.
It has a list of all the settings required.
- To configure your iPhone start by tapping the Settings icon.
Unless you have moved it you should find it somewhere on the first
page of your home screen.
- Scroll through the list of settings and tap on Mail, Contacts,
Calendars
- In the screen that appears tap the option for Add
Account...
- You will want to select Other
- In the screen that appears you will see four fields to
complete. Name is the name you would like to appear when you send
messages. The Address is your full Hotmail address. Although I
haven't tried it I presume that addresses at msn.com and other
Microsoft domains should work. Enter your account password. The
Description defaults to your email address but you are free to
change that to whatever you like.
- Click the Save button and then navigate to your iPhone's email
client. It might take a few seconds to catch up but you should see
your newly added account appear.