A while back I signed up for a wood carving class at Lee Valley and last night was the first class. The project we are carving is a 6″ or so bust of a mountain man complete with ‘coon skin cap.
As it turns out most of the other students in the class have all been carving before. Some have been carving for several years. I’m definately the young and in-experienced guy in the class. A nice suprise is that I know one of the others in the class because he took my web server class years ago. It’s a great group and a nice social activity. People joke and chat as they carve.
The blank was a large very roughly shaped piece of basswood. For our first class we were supposed to shape the hat. Apparently when carving a face, with a hat, you always carve the hat first and then carve the face to fit into the hat.
Lee Valley provided the tools but after the class I ended up purchasing a few things so I could continue working at home.
- The Bubinga Skew Carving Knife – as recommended by the instructor.
- Warren Fishtail Gouge – also as recommended by the instructor.
- Kevlar Gloves – mine are not quite like this. Mine don’t have the rubber knobbies and were $8 cheaper. These things are awesome. The pretty much protect your hands against slashes (but not stabs) when carving. I used a pair during the class and they definately prevented a few cuts.
I already have a really nice set of Henry Taylor gouges that I believe will come in handy as we move from general shaping towards the detail work.
Anyways that’s about it for now.
No this isn’t a Halloween post or anything like that. This post is about a fancy Pythonic language for the .NET CLR called Boo.
Boo is a strongly typed programming language that has a very similar syntax to Python and it targets the .NET CLR. The syntax differs in quite a few places to make to Boo functionality mesh better with .NET and also there is a lot of syntactic “sugar” added that makes using Boo super fun. Boo comes with a compiler that can turn Boo code into standard executables/libraries. It also comes with an interpreter. Even more interesting is that the interpeter is available in a library that can be used in other software.
While I’m pretty sure we won’t be using Boo for our main software development tasks anytime soon it looks like a marvelous tool for providing user scriptability in our apps. The application I work on here requires vaste amounts of customization per client and having the flexibility of an embedded scripting language that can poke and prod our business objects would be swell. And with Boo it’s really easy.
For example: Say we have a business object that has a name property and we want to allow the user to manipulate that property we can create a Boo interpreter and pass the business object into the environment and let them provide a chunk of script to manipulate our object. It’s that easy. The following code shows how easy this is:
using System;
using System.Collections.Generic;
using System.Text;
using Boo.Lang.Interpreter;
using Boo.Lang.Compiler;
namespace ConsoleApplication1
{
public class BusinessObject
{
private string m_name;
public string Name
{
get { return m_name; }
set { m_name = value; }
}
}
class Program
{
static void Main(string[] args)
{
string code = "bo1.Name = bo1.Name.ToUpper()";
// Create a play business object
BusinessObject bo1 = new BusinessObject();
bo1.Name = "Jeff Clement";
// Setup the Boo Interpreter
InteractiveInterpreter interp = new InteractiveInterpreter();
interp.SetValue("bo1", bo1);
// try running our script
CompilerContext context;
context = interp.Eval(code);
// If compiler raised any errors throw them as exceptions
if (context.Errors.Count > 0)
throw new Exception(context.Errors.ToString());
Console.WriteLine("New value of Name property is " + bo1.Name);
}
}
}
The output from the above is the string “New Value of Name property is JEFF CLEMENT” because the Boo script ran against that object and upper-cased the name property.
Anyways that’s about all I have to say. It looks like a very promising tool and I hope we get a chance to roll it out here
I have a lot of data scattered around the Internet on various servers. A lot of my personal data exists on an account on a server at Dreamhost. I also have a some servers at home and a client’s webserver with about 12G of data on it. All in all I’m responsible for about 15G of data out there and I would like that data to be backed up with some regularity.
Obviously this is enough data that just downloading the whole mess every week or so is a poor choice. Luckily there is rsync. Rsync is a very handy utility that can synchronize two directories without transfering unchanged files needlessly. It’s very efficient and just perfect for this task.
My setup is pretty simple. I have a central backup server with limited inbound access and a big HDD running OpenBSD. All of my remote machines are Unix-y boxes and accept SSH connections. Every week my backup server connects to the remote machine using rsync over SSH and sychronizes a snapshot directory on my system with the remote data. The first time I ran this it had to transfer all 15G of data and it took a long time but subsequent backups only transfer data that changed so they are pretty quick (usually).
This alone would be great but I also want some backup history. Unfortunately my drive is only 80G and storing many weeks of data = tonnes of space. Luckily there is a neat trick you can pull with rsync. You basically create a new snapshot directory from the old one where each file is a hardlink to the file in the old backup set. Then when you run rsync it will replace the changed files but the unchanged ones are still just hardlinks to the original so you can store months of backups without using much space. New versions of rsync even have a fancy option to make this super easy.
I’m sure that really didn’t make much sense. It’s explain really well here so I don’t feel the need to spend more time on it:
Anyways I wrote a script to make this all real easy. If you are in need of a simple backup solution and your situation roughly matches mine it might be worth a peek
Wow. I actually encountered the 64k code / procedure limit in VB6 this morning. I’m sure when this limit was set the programmer thought that nobody would ever write a single function of that size and really nobody should, but we did
I believe this is a prime candidate for refactoring!
Kyle bought a 4×5 camera a few weeks ago and recently shot a couple frames of black and white. He doesn’t have a darkroom, yet, and he needed them processed so I figured I’d give it a try since I’ve got the darkroom and the chemistry.
I was originally planning on tray developing them but after thinking about having to spend about 30min in total darkness swishing the negs in a tray I thought better of that. Also, my darkroom is certainly dark but it’s not light tight and while the minor leaks don’t affect my paper, in the few minutes it is left exposed, it might effect the 400ISO sheet of film that would be exposed for 30min.
What I wanted was some sort of tank that I could put the film and chemicals into and then turn on the lights and agitate as necessary. They sell commecial day-light developing tanks for 4×5 but they are pricey.
Anyways what I came up with was a section of black 1 1/2″ ABS pipe with an end cap on one end and a clean-out cap w/ plug on the other. 1 1/2″ pipe is sufficient to hold a piece of 4×5 film rolled on the short side. I made the section of pipe 6″ long to cover the 5″ of film and leave a bit of room for extra chemicals and air. I didn’t use ABS cement because I wasn’t sure if it would have an effect on my chemicals and it’s not like this contraption is under pressure. The press fit is sufficient to keep chemicals from ozing out. I spent $20 at Rona and have enough fittings + pipe to build 3 tanks.
One thing to keep in mind if you are constructing some of these is to sand the lips of the tube. Freshly cut ABS is pretty sharp and would likely leave big scratches in the neg. I just used some 200grit paper and rounded it off a bit.
The tanks hold about 180ml and one negative at a time. The obviously have to be loaded in the dark and when you open if to change chemicals it also has to be dark but at least the rest of the time I can read or whatnot.
My future plans are to build some sort of rotary device to just spin the tubes slowly so that I don’t have to agitate all the time. I’d love to be able to just dump in some chemicals and wander away for a bit. I’d also want to use this for my 35mm processing.
I have a lot of 35mm plastic reels but only one small Patterson tank. I might end up building a huge tank from 4″ ABS (or whatever works) so that I can process large batches of film at once (ie. after a vacation or something). It would still have to have chemicals loaded in darkness but it would probably be worth it.
With a title like “Snakes on a Plane” you know this has got to be one great movie. Right up there with “Boa vs. Python” although perhaps even a worse name. One has to wonder how they managed to snag Samuel L. Jackson.
I am most definately organizing a trip to go see this in theatres!
UPDATE: I do not recommend buying this tripod!
Last week I purchased a Manfrotto 714B tripod from the Camera Store. The tripod was on sale for $100.
This tripod is pretty tiny. I think it might be the smallest one Manfrotto makes. Unlike virtually all of their other tripods this one does not have a replaceable head. It’s got a very tiny integrated ball head.
At the time I was kind of flip flopping between that and a more serious tripod. However I ended up settling on this little guy because of its size. I knew if I bought a larger tripod I’d never have it with me which doesn’t really do me any good (it’s hard to lug around kids, kid stuff, camera and a full size tripod when you head out to the zoo, for example). This guy is small enough to fit in my back pack (44cm tall when folded) and it only weights 1.15kg.
The legs are composed of 4 sections. I find that the bottom section is pretty thin and while it works alright I usually leave them collapsed unless I really need the height. That means I’m bending over to shoot but the tripod is really rigid that way. The center column can also add height but again it makes the camera a bit unsteady so I try and avoid it.
The ball head is very cool. I’ve never used one before and I love it. I believe this one is a bit different from the norm in that the control for the ball head is a knob on the other end of the center post. It’s a bit of a wierd place to put it but not unpleasant. A nifty thing is that you can crank the knob to adjust the amount of friction on the ball head. This is great because you can easily adjust it so that the camera stays still on its own but you can still move it as necessary without further adjusting of the knob. This makes recomposing for a shot very fast and you can still be wearing mittens because there are no knobs to touch.
Another nice trick with this tripod is that you can unscrew the ball tension knob on the bottom of the center post and then remove and invert the center post to allow you to shoot low subjects like flowers. It’s not quite as fancy as the more expensive models that allow you do that and splay the legs out further but it’s good functionality for a tripod of this size.
I’ve had some time to use it now and I must say I love it. I’ve certainly noticed the difference between this and the $20 Walmart special I’ve been using to this point.
So for a while now I’ve been placing snipes on various camera things well below their value just on the off chance nobody else bids on them. One of these things was an Olympus XA 35mm camera. I have an Olympus XA-2 already, and I love it, but having the additional focusing / aperture control would be fantastic. These cameras usually seem to be going for about $120 so I put my snipes at $60 and bid on several of them.
Anyways it turns out I should have paid more attention because one of those lots was actually in British Pounds which are worth a little over two times the value of a Canadian dollar. I ended up winning the camera for about $150CAD (incl. shipping).  Ooops! Hopefully it’s in good shape.
So the moral of this story is to always remember to check the currency
On the weekend I finished making a replacement table surface for our kitchen table. Our old one was very tiny and any time we have people over it’s super cramped.
The new top is a sheet of 5/8″ MDF cut down to 3’6″ x 5’6″ (where the old table was maybe 2’6″ x 4′). Strips of MDF were cut and glued and screwed to the underside along all the edges to increase the thickness of the edges without adding significantly to the weight. I glued and nailed oak strips along the outside edge, trimmed that flush with the top of the MDF and covered the whole thing in an ivory arborite. Finally, I routered the edge with a very subtle chamfer and finished with a light walnut danish oil.
I just unscrewed the old surface from the table base and installed this one and it looks really good. Very large but large was what we were after. In a few days I’ll put on a few coats of poly just to really protect the wood edging but aside from that I’m done.
On Saturday night my parents treated us to a couple shows at the Pumphouse Theatre. They put on two plays that evening. The first was “Trial by Jury” and the second was the “HMS Pinafore”. Both plays were written by Gilbert and Sullivan and both Anji and I thorughly enjoyed them. Our only complaint was that we found we understood very little of it. A lot of the females sung so high pitched and fast that neither of us could follow the words. I bet it would have been even funnier if we could have understood it