Wednesday, May 25, 2011

I finished the drafting table

I finished my wife's drafting table, so I'll tell you how I decided to get it to work.

First, I ended up finding a heavy-duty hinge laying around, so I bought another one for the front instead of making my own. It works out alright (probably better than my home-made idea would have), but they aren't perfectly aligned. They're aligned with the front rail, but I used that rail as part of a tripod to hold some rebar I was welding on for my arbor, and bent it when I cut it loose. It doesn't really impede opening the top, but I could tell it was flexing that front rail when I opened the top all the way.

To the right, there's a picture of most of the workings on the handle end of the winch. The winch pipe is a piece of galvanized pipe I had left over from the legs. It is held against the front legs and front rail with a pair of couplers (3 inch, I think) that I bought at Lowe's. I didn't want to drill a hole through the pipe with a hand drill; I don't have any way to hold it straight while I'm doing it or to keep the bit from walking. So I picked up a couple of half-links from Lowe's where they cut the chain. They gave them to me free, since they don't have a use for them. They are the leftovers from when they cut chain to length for a customer. I welded them to the pipe and tied the cable off to that. On the right-hand end, I welded the half-link so that the pipe can't be pulled out far enough for the other end to drop out of the coupler. I didn't measure the distance, but just pulled the pipe out until the end almost dropped, marked the point where the pipe met the right-hand coupler, and then welded the half-link there.

I welded a short piece of rebar across the end of the pipe, and another short piece at a right angle (ok, not-quite-right angle) to that as a handle. I found another piece of pipe (actually, I think it is a "nipple" I bought at Lowe's, and I cut off the threads) to go over the handle. I put a washer on to keep the pipe away from the angle, and then welded another washer on the other end to keep it from coming off. I welded another short piece of rebar sticking out from the coupler as a stop. The handle could be locked behind it to keep the top from coming down.

Then I welded two more hinges on the back rail of the top, and welded pieces of angle-iron to hang down on those and act as lift bars. I drilled a hole in the end of each piece to receive the end of the lift cable. I bought a couple of cheap pulleys from Lowe's. They're pot metal, and I can't weld them, so I ran a nail through the eye and welded it to the back rail of the bottom frame. I then ran a cable from the hole in the bottom of the lift bars, through the pulley, and to the half-link on the winch pipe.

So far, at this point, everything worked, but there were problems. First, the pulleys were mounted behind the lift bars. I didn't take into account the geometry of that setup. The lift bars swung out passed the back before any lift occurred, so they would end up scratching the wall. Also, the pulleys are very loose, so there is a relatively wide gap between the wheel and the carriage. I had to mount the pulleys slightly to one side of the lift bars because they were behind them. I couldn't very well run the cable through the bar. So when the table got close to the top of it's lift, the cable was pulling sideways on the pulleys. The pulleys didn't have enough (or smooth enough) swing to swivel up 90 degrees, so the cable dropped off into the gap between the wheel and the carriage and locked up. So I had to get the pulleys more in line with the lift bars somehow.

Second, my wife kept forgetting to push the pipe back in to lock it, so I needed some way to make it lock itself.

So, for the first issue, I added another cross bar in front of the lift bars. I attached the pulleys to that. But I still hadn't worked out the geometry, so the new crossbar is too far forward, and the lift bars swung way too far forward. I moved the crossbar further back, but I didn't move it all the way against the lift bars, and they still swung too far out. I don't remember why I didn't move them all the way back. I think I was trying to figure out where the lift bars end up to get the top as high as possible, but I'm not sure.

With the lift bars swinging, it cost too much in lift force. My wife couldn't turn it at all with 1 hand, and couldn't do it easily enough even with two hands. So I decided to ditch the pulleys altogether. I got a couple of more half-links and welded them in place of the pulleys. Then I drilled a couple of shorter sections of angle iron and welded them between the back cross bar and the back rail. I ran an eye bolt through each hole to serve as an adjustment. I then ran longer cable from the winch pipe, through the half-link, down to the lift bar (oh, I almost forgot, I welded another half-link at the bottom of each lift bar, as the friction of going through the hole I drilled would have been too much), back up to the half-link, and then to the eye bolt. Double the lift force, but with the added friction of the half-link instead of the pulley. It did get a little easier, but not enough. I finally ended up welding the hinges for the support bars so that they didn't swing at all. That finally made it easy enough that my wife could work with it.

So then I started working on getting it to lock on it's own. I had a piece of angle iron laying around, one of those pieces that have holes and slots all the way down it. I cut a section out of it with the angle grinder and welded this over the end of the left-hand pipe support, so that one of the pre-drilled holes was centered. It wasn't big enough for half-inch rebar to pass through, so I wallowed it out with the hand drill. I then found a large washer I had laying around that just happened to fit over the end of the pipe and had a half-inch hole. I welded it to the end of the winch pipe (I had to cut off the right-hand half-link to get it out first), then welded a piece of rebar to that. I stuck the rebar through the centered hole. Then I bought a compression spring from Lowe's, and put it over the rebar and then put a washer on to hold the spring. I put a clamp on the outside end of the rebar so I could fine-tune the tension before I welded it in place, and brought my wife out to test it. If the spring was tight enough to ensure that the crank handle was pulled back behind the stop every time, it was too tight for my wife to pull the handle out and still crank it with one hand. And even when she used two hands, the desk was so light that she was lifting it off the ground instead of actually turning the handle. I noticed that it was harder to pull than it should have been because the ridges in the rebar were catching on the angle iron, so I ground those out smooth. But that wasn't enough to affect it much; it just made it a smoother pull. So the last thing I added was an extra piece of metal that I cut off of the angle with the holes. I welded it so that it formed a ramp from the edge of the winch pipe support coupler to the outer end of the rebar stop. This way, when my wife cranks the handle, it slides up the slope and passed the stop without her having to pull it out by hand. She can now crank it with one hand, and hold down the desk if she needs to.

Once I got that in place, I welded the washer holding the spring into place where the clamp had been holding it, and cut off the extra rebar. I cut a piece of 3/4" MDF for the top and attached a scrap of wood down the front edge. My wife painted the table with some chrome paint we had laying around, and painted the top with white. It makes an awful lot of noise, and looks like it takes her a lot of effort to crank, although it's easy enough for me. She thought all the mechanics were a waste of time, until we got it into her art room and she tilted it up for the first time to work on some project. Then she loved it. It's bigger than anything she could buy from hobby lobby, and still cheaper overall.

Monday, April 18, 2011

Truck Work - Water pump replacement

My truck had been squealing for a while. I think it is rather coincidental that I have had it for 12 years and it never squealed once, but I take it to get it inspected and it starts squealing as soon as I start it up to leave. I really think they screwed something up, but I don't have any way to prove it.

Anyway, I thought it was the belt, but everything looked fine. But I did notice a small spot that looked like some fluid was slung against the side. When I watched it running, I couldn't find anything leaking, but the fan pulley was moving forward and backward. It's not supposed to do that, and I could wiggle it, so I knew a bearing was going out. A friend mentioned that the water pump is behind that pulley, so what I saw slung out was coolant.

I kept meaning to do something about it, but wasn't too worried about it. It only squealed when starting, and it wasn't leaking much water. As long as it didn't overheat, it could wait a bit. Of course, I know better. A bearing is one of those things that gets exponentially worse. Once it fails at all, that failure makes the rest of it fail, and it cascades.

Anyway, I went to Lowe's and when I got out, I smelled radiator fluid. You know, that standard smell you get when a hose is leaking or something. I popped the hood and there was coolant all over the engine cavity. I didn't drive far, so I guess it didn't get hot enough to send up a steaming cloud. It was the last straw. I used the garden center's hose to top off the radiator and headed home, knowing I really couldn't risk driving it again unless I got it fixed. And that could be bad. I was hoping the bearing would be easy to get to and replace once I got the fan off, because it looked like the water pump was probably inside the engine block.

Luckily, I was wrong. The water pump isn't mounted to the engine like most things are. Most of the stuff, like your alternator and air conditioner compressor, are mounted on flanges and such and just attached to your engine. The water pump is much more integrated. In fact, when you replace it, you are really only replacing half of what you would normally consider a pump. Normally, you have a case with water going in one port, out another port, and the impeller somewhere in the middle. But the water pump on the truck (at least mine) is only the front half of that case. The back half is molded into the block (I think). So when you take it off, the impeller is exposed.

Anyway, here are some tips if you have to work on it.

First, there is a special tool called a fan clutch wrench. It can be used to go across the bolts on the pulley to hold it still while you loosen the nut holding the fan on. Don't bother renting it from AutoZone if you have a 1999 dodge ram. It's just a tad too small, and won't fit.

The other method my repair manual suggests is to just use a pry bar between two of the bolt heads. I originally didn't want to go this route, because jury-rigging things like that tends to be a pain in the butt, and I always end up banging my knuckles a few times before I find a good solid pry spot with the right leverage. Plus, the tool rental from AutoZone is free as long as you return it, so I figured that was the best bet. But honestly, the prying was MUCH easier than I expected. You have to stick your own bolts through the holes in the pulley, at least for me. The manual says they are there, and even talks later on about removing them, but I just had four holes. But once you get the bolts in (you don't need nuts or anything) and wedge it with, in my case, a screwdriver, the nut comes off very easily. I guess it makes sense. It is held on and tightened by the motor turning, so it really only has to be tight enough that it doesn't come unscrewed when you turn off the motor. Oh, and you're going to need a large wrench. The repair manual says 33mm, but my caliper says 36+. AutoZone didn't have even a 33, much less a 36, so I bought a big 1-1/2 inch Kobalt crescent wrench from Lowe's. I had never noticed one with a scale on it before, but this one had one and it said 36mm as well when I tightened it down on the nut..

So, I got the fan off. The only hard part really was trying to reach around the fan shroud. They really should have made that thing two piece. Either cut the whole thing in half, or at least give a removable piece on top. I almost did it myself with the sawzall, but I didn't want to make another trip to Lowe's for the mending brackets, bolts, and lock nuts I was going to use to reassemble the pieces.

Once the fan was off, it wasn't a big deal to get the bolts out of the water pump. I did have to stick a screwdriver in the output port to pull it off the block though. And when I did, a good portion of gasket was still on the block. I took the pump to AutoZone to see if they had bearing kits or anything. They said it could be rebuilt, but not with parts they sold, so I just bought a new one. It came with the pulley attached, so I didn't have to get that off. It also came with a piece that screws in and that the "by-pass" hose clamps to. The guy in the store didn't think it did, and they didn't sell that piece, so I spent 15 minutes on their counter trying to get it loose with a pipe wrench. I had decided I'd have to take it home and soak it in WD-40 overnight and was looking in the box to make sure a gasket was there and saw the pipe in the gasket bag. I should have checked that first, I suppose. It even had the o-ring that the heater pipe needs.

So, I bought Blue RTV stuff and the pump, and headed home. Before I could install it, I had to get the old gasket off. I scraped quite a bit off with a putty knife. And actually, in all honesty, I probably could have left the rest since I was going to use the Blue RTV stuff anyway. But, I decided I wanted it all off. I tried using the putty knife as a scraper, but was scraping metal as well. I tried a wire brush, but couldn't get into all of the spots or even reach the ones I could get very well. So I put a wire brush on the dremel (knock-off) I have. It worked, but was slow, and ate up the entire wire brush. I finally put a sanding "flap-disk" on it, and that did the trick. I didn't try it first because I thought it would be too aggressive. But I figured if I was careful I could keep from screwing anything up, and the gasket sealer would fill any gouges. But I was worried needlessly. I suppose the flap wheel could have screwed it up, but it seems to me you would have had to have been trying to screw it up. It did round some of the corners a little, but it's not crucial that they stay perfectly square, so I'm not worried about it.

So then it was time to install it. The only problem I had was getting that by-pass hose hooked up. You can only reach about a half inch of it, so there's nothing you can grab to push it on. And what little space you do have is taken up by the constant-tension clamp you are trying to hold open with your only free hand. The way I ended up doing it was getting my daughter to hold the clamp open while I wiggled the pump all over the place while shoving the pipe into the hose. I may have been able to do it one handed, but it would have taken longer, and I had already put the RTV on both sides of the gasket and such.

After that, it was just a matter of tightening down the bolts and putting the fan, fan shroud, and belt back on. A note about the bolts; they aren't all the same size. I normally don't worry about it. I've always been able to put anything back together once I've pulled it apart, but I took care this time anyway; I am getting older after all. There is one bolt in the top center that is different from all the rest. It has a hex head, but it also has a center socket. I think this is because it is lower than the top of the pulley on the pump; the center socket clears the pulley, but the bottom of the hex head doesn't. (I used a ratchet and socket to loosen it, then an allen wrench to get it out the rest of the way. Same thing in reverse to install it, since I couldn't get enough leverage with the allen wrench to use just that.) I used this bolt as a marker. I knew I could remember where it went, so I laid all of the bolts out starting at that one and going counter-clockwise around the pump. That way I would know where each bolt went by using that odd bolt as a reference point.

I filled the radiator and overflow container with water, started it up, and everything worked. No squealing and no water leakage. I'll take it someplace this week probably and get the radiator flushed. It's supposed to be done every 2 years, and I'm not positive I've even done it once in the 12 years I've owned it. I do know that the coolant was a very nasty brown color, and that there is apparently enough sludge on the bottom of the radiator that fluid wouldn't even come out of the valve when I opened it initially; I had to take the lower hose loose to drain it.

Oh, one more thing. The fan has a viscous clutch on it. According to the manual, the silicon in the clutch could screw up the bearing if you store it flat. So if you do like I did and disassemble one day and reassemble the next, stand the fan against something instead of laying it down.

Monday, April 11, 2011

Walmart adamantly anti-green

I was working night-shift a couple of weeks ago and got a craving for chili-mac for lunch (at 4am). We were out of chili, so I went to Walmart to get some. I rode my motorcycle, and had my motorcycle backpack with me, so I didn't need a plastic bag or anything, and figured I'd do my little bit to help keep some plastic out of a landfill. But the cashier didn't care. According to her, it is Walmart policy that they are not allowed to put items in anything other than the company plastic bags, or allow you to do it, and she refused to let me put the cans directly in my backpack. I could have argued and thrown a big fit about it. But, I didn't feel like it. Instead, I took the plastic bag that she handed me and dumped the chili into my backpack (inadvertently ripping the plastic bag in the process, but not really caring). I handed her the torn plastic bag back and politely asked her to throw it away for me. She wasn't happy about that, and that made me happier. She finished running my credit card and said that she supposed I'd have my receipt so I could just show them that. I said I supposed I could, and then proceeded to make sure that she got a good view of me wadding up the receipt and sticking it deep into my pocket before I zipped up the backpack to head out. She wasn't happy with that either.

What happened to "the customer is always right"? What gives the store the right to determine how I carry my purchases? For that matter, what gives them the right to search me on the way out in the first place (or in this case, to assume I'd stand for it if they did)? I'll tell you what; nothing. So don't stand for it. If the greeter at the door had asked to see anything, I would have told her no. Just as I tell the guy standing at Fry's that he can't see my receipt either. If he wants to know what I bought, he can go check with the cashier or the security cameras. I'm not wasting my time simply so they store can search my stuff.

In the interest of full disclosure, I'd like to point out that I am vehemently against Walmart (and all big-business for that matter). I don't like their practices against competitors and will gladly pay more at a mom-and-pop than go to Walmart. Of course, at the same time, I can afford to pay a few dollars more, and I realize that some people can't. So if you like Walmart, I don't have any problem with that. But I firmly believe that if you have any two businesses that in all other respects are equal, the one that is most evil will put the other one out of business. I believe that in 99% of cases, this is how the big business gets big. And the bigger the business gets, the more evil it normally becomes. It may be that a new business starts up and can actually get to a decent size simply because they don't have any competition. Either they are in a market that no one else has taken advantage of, or they have a new product that no one else is selling. But as the business gets bigger, they get more and more driven purely by profit, and less by people. They no longer have a single decision-making individual who deals directly with the customers. It's a lot easier for a corporate exec to mandate that the customers aren't allowed to use their own bags when they never have to actually tell that to a customer anyway. It's also harder for me to get seriously riled at a cashier when I know she can't make any decisions anyway. The best I can do is get her fired, and that's never going to solve anything.

And even as to the anti-competitive nature of all big business, I suppose I can't really blame them. If they aren't evil to begin with, and are content to hold what they have, their territory (be it an actual territory of land, or a virtual territory of a new product) will eventually be invaded by someone that is evil. That's the problem with most small businesses. There are plenty of small business owners that are perfectly content with their small business. They started a couple of stores, they are making enough money to live happy and still afford managers to run the business so that they have plenty of free time, and they're fine. But eventually a walmart will move in and take over their territory. The bigger business can do things that the small owner can't, and that aren't moral or ethical. For instance, the big business can afford to not only pay the current land owner for the new shopping center, but can pay off the zoning boards and the council and such with large "donations". So the only way to keep a business alive is to become evil, and to do it early. Because if you wait until walmart is already knocking on your door, it's too late. You won't have the firepower to compete.

Monday, April 4, 2011


For some of us, ambition is what drives us to get up in the morning. Many of my actions have been based in ambition. The ambition to get ahead at work, the ambition to retire doing something I enjoy, etc. But you know what; screw it. It's not worth it.

My job

The position I would have striven for in the long-term has closed. That's not the way management would put it, but everyone else can see it's closed. And the short-term goal of just getting off of back-end projects and onto more front-end and UI stuff is closed as well. Questions about it just go completely ignored. I was originally stuck on production support work because I was too good. I could pick up any project written by any of the contractors that had left or whatever and get it working. But now I've lost all of the skills for new project. I'm getting further and further behind the development curve because I'm forced to continue working on projects that are 2 or 3 generations old. At the same time, since it has finally drained all ambition, it's not bad enough to make it worth looking for a new job. A catch 22 of sorts.

My photography

I love taking the pictures, but that's about it. I definitely don't want to spend any more time on my website, and my wife is completely and vehemently against me paying anyone else to do it. I could still pay them, but it would just be swapping one thing making me miserable with another. I also have found that I have to find some way to improve my creativity. In high school, I was doodling and creating all the time. Now, not so much. The creativity I do have is too large. I have a few ideas for entire complicated shots, but the creativity for the small improvements to standard simple shots isn't there. My nature shots are alright, but they are just random luck. Most of the things that I find interesting won't actually make good shots. Or maybe they will, and I am just missing that spark that will make it translate to print well. I'd like to be able to do portraits and such, maybe eventually do aspiring-model portfolios (taking pictures of women ranging from half-naked to naked wouldn't be bad either), but I don't have the skills in that area. I'll still work on it some, of course. I'll take some photography courses at the community college, and I'll go over the David Hobby and Joe McNally DVDs. But I'm not going to let that ruin my free time.

My t-shirts

Let's face it, that was never going anywhere anyway. I only have two designs and another in the thought stages. Even if I managed to get a steady stream of traffic and sales, three shirts are never going to make enough to live off of. And it's another thing I need to have someone else market. I don't have time during the day, because I'm at work. I don't want to do it in the evenings, because it's not enjoyable. I could hire a salesman, but again my wife is vehemently against me spending money for ideas she didn't come up with. You'd think a former financial manager with an accounting degree would be able to understand that you can use commissioned sales to keep from paying sales people out of your own pocket, but she just can't grasp that for some reason. So even that isn't worth the effort of listening to her shrew-on about it.

So, long story short, it has gotten to the point that the ambition to make my life better has actually made it worse. It hit me when I bought a book while I was on vacation and decided to take the time to read it. I remembered how relaxing it was to actually be able to sit and do something enjoyable. It's been months since I had been able to. I realized that all of my efforts were only succeeding in preventing me from having the time to just sit down after work and read a book.

So, I'm done. And for those of you striving to improve your lot, you might want to stop, take a deep breath, and determine how bad your lot actually is. It may be that you need to continue to struggle and strive. But you may find that, like me, you just need to relax and let it ride.

By the way, the photography DVDs came in today, so I'll let you know how those are when I get a chance to look them over.

Monday, March 28, 2011


I went to FlashBus when it came into town.  I got to listen to David Hobby and Joe McNally talk and demo some stuff.  Mr. Hobby ran through a lot of slides and discussed the various changes and such in the process of setting up a shot.  Mr. McNally ran through shots on stage while wired into the laptop rigged to the projectors.

I think I got more out of Mr. Hobby's presentation, simply because it was slower; Mr. McNally ran through his shots VERY quickly (of course, on a job, you would have to).  But all in all, I don't think it was worth the money regardless.  We weren't allowed to record audio, so I don't have the ideas behind some of the slides unless I took notes.  I did when I could, which was much more often with Mr. Hobby's, again because it was slower.  But even then, I don't necessarily know which notes go with which slide, and either my camera/card/computer is screwed or I didn't get as many pictures of the slides as I thought I did.  And those slides are not on the DVD's I ordered.

Basically, I was under the impression (not that I remember why) that it was a workshop, not a seminar.  To me, a seminar is the free one where they talk you into paying for the workshop, product, pyramid scheme, or whatever.  In this case, the seminar wasn't free and basically served to convince me I needed the DVD's.  Since I had already ordered the DVD's, it was a waste.

Now, don't get me wrong.  They aren't actually pushing the DVD's.  They do seem to be trying to teach to an extent, and maybe it is just that that is the best they can do in a one-day lecture-style "class".  And one of the things to take into consideration is that I can't remember lectures very well in the first place.  I don't learn from lectures or just reading books, I have to actually do it.  So I don't remember most of what was gone over, even from the slides and photos of the setups I took.  But if you are one of those people that can remember that stuff, or can take really good notes, maybe it will pay off.

For me, I'm more looking forward to getting the DVD's in my hand and loaded onto the laptop.  Then I'll get my kids and maybe friends as well to pose for me to practice stuff.  I'll let you know how that works out.

After getting some sleep and reading this again (I'm working night-shift this week), I think it may have come out more negative than I wanted.  I stand by the statement that the seminar was a waste of money for me.  However, I do want to emphasize that both of the guys are very good at what they do.  Both the manual stuff that David Hobby does and the TTL stuff that Joe McNally does are really useful if you can retain it in that format.  I just can't, so I await the DVD's.  As far as Mr. Hobby's portion, I think you might get most of the same info off of his blog, especially the On Assignment section, although I think the seminar gave more in-depth detail about things like what he tried that didn't work.  The DVD set is supposed to do even more of that, as it supposed to go through every test shot and setup change.  I haven't read Mr. McNally's blog, so I can't say anything about information overlap there one way or the other.

Monday, March 21, 2011

My week

So, I was off for spring break this week.  I got quite a bit done, it seems.

I got a windows XP virtual machine set up for my wife.  She can't figure out how to use ubuntu and keeps whining about not having windows and such.  But she refuses to take any of the precautions I try to get her to take, like disabling javascript and cookies and such.  That's why I switched her to ubuntu in the first place; so I wouldn't have to be her "help desk" all the time.  So now, when she screws up the virtual machine, I'll just delete it and copy back from the original that I've saved.  I also found my windows 98 disks and got a virtual of that set up.  Now if I can just find the old games I wanted to play.

I need a 50 amp 220 volt line for my welder.  I bought the old-work outlet box, the power outlet, and the face plate.  My breaker box is full, but I have a 20 amp 220 volt line I'm not using.  I found it's breakers and pulled them.  It was two 20 amp 120 volt breakers instead of one 20 amp 240 volt breaker, but that doesn't matter.  I bought a slim "space saver" 50 amp 240 volt breaker and got that installed.  But home depot was out of the 6 gauge, 2 conductor (plus ground) wire.  They guy gave me a list of other stores that had it.  I went to one of them today, and they were out too.

My mig welder ran out of gas, but I managed to finish my wife's drafting table first.  I'll post about that later.  I'll have to go to the welding supply store and get a new supply of argon/co2 mix, so I'll probably try to find a home depot near the welding supply, but I'm going to call ahead first.  I'm tired of wild goose chases.

I went to visit my aunt and uncle.  I don't get to see them much, so that was fun.  They're also out in the country, which I don't get to see enough of either.  My wife doesn't like it, but I hate the city.  For instance, I did some target shooting with my...nephew?... with high-powered pellet guns.  I can't do that in the city.  Personally, if I can't shoot a deer rifle or my 45 without worrying about hitting a neighbor's house or having one of them call the cops, then I'm too close to them.  But, my wife has to be close enough to the city to go shopping, so I'm kinda stuck.

I got some new ideas on the trailer.  I want to weld jacks under it to make leveling it easier (and so I don't have to spend storage space on the jacks).  I think I figured out a way to weld them to hinges welded to the frame so that I can swing them out of the way, since the trailer is so low.  But I need to find a way to lock them up and unlock them without having to crawl under to do it.  As to the height itself, I think I found a way to get an easy 4 inches or so of lift, but I need to look into how safe it is first.  I'll let you know how that works out.

And finally, I stripped the paint off the cargo rack I welded up.  Chrome paint isn't going to work.  Even Chrome enamel turns flat gray when it gets rubbed, which isn't going to work with my backpack strapped to it all the time.  So I'm going to go with a plain black enamel.  I'd rather go glossy, but I'm going to try and kill two birds with one stone and get barbecue grill paint.  I don't know if they have that glossy or not, though.  Actual chroming would be nice, but at the price ($85 is the cheapest I found) I might as well have bought a rack (although making my own gave me an extra 3 inches width and depth, and 3 inches or so storage height).

So, today I'm back at work, for a week anyway.  Next week, I have to cover night shift while someone else takes a vacation.  Oh well.

Monday, March 14, 2011

Zazzle Widget bugs

So, I'm still working through the Zazzle Widget code.  I've already fixed a bug in the get function in lastRSS.php.  Now I am working through the Parse function.  I actually think I like the Zazzle Store Gallery better, so I'm hoping it has the same problem.

I traced it down to a call to a routine called curl_init.  Again, my echo's worked before but not after.  Unfortunately, my custom error handler didn't even work here, so I couldn't get any error text out at all.  The RSS URL is passed to it, so my first thought was that even though I verified that the URL was correct, perhaps there is something wrong with it that firefox doesn't care about.  curl_init is a PHP command, so it showed up in the online PHP Manual at  This told me that the URL didn't have to be passed, so I tried calling it without it.  Still no luck.  I even tried creating a test page that did nothing except call curl_init with echo's before and after, just in case it was a combination of the call with something else on the page.

So I started searching for "curl_init fails".  I didn't find anything.  I found one site that said the curl_exec function would fail silently and to call curl_error, but that didn't do me any good because execution stopped before I could call curl_error.  After digging through various search results and not finding anything, I decided to check the manual again for anything I missed.  I forgot the link, so I searched for just "curl_init" again.  This time, the SECOND search result caught my eye.  Someone was reporting an error:
Fatal error: Call to undefined function: curl_init()
I couldn't get any errors at all, but I hoped this would give me some insight.  Sure enough, apparently curl can be turned off, and one of the posters suggested running phpinfo() in a test page to see if it said anything about curl.  If it didn't, then curl was disabled.  Well, phpinfo() definitely didn't say anything about curl on my server.  Further down in the forum page, I found that there is yet another library I have to install called libcurl, and that even then I may have to recompile the PHP library myself to allow it to use it.  Gotta love those linux developers.  Here's to hoping that it's already compiled properly.

There should be a GUI configuration utility for PHP that has an "enable curl" checkbox.  If I check that, it should download the appropriate library if I don't already have it.  Oh, wait.  That's if the developers wanted the app to be user friendly.  We're talking linux here, not Windows, so no chance of that.  So let's do some more searching.  Searching through the Ubuntu Software Center for libcurl doesn't seem to give it to me.  Lots of references for various languages, but none for php.  Searching for just curl, however, turns up CURL module for php5, which is apparently in a library called php5-curl, so I installed that.  Now, after restarting the web service (sudo service apache2 restart) the phpinfo() call does have a curl section.  Yee-haw, I don't have to recompile anything!

I still have errors, but we're much much closer.  Now it is apparently able to download the file, or at least thinks it does, and is giving me permission denied trying to open it.  Checking the cache folder, there aren't any files in there at all, so I'm thinking it didn't really download it at all.  It turns out the fopen lines that are failing are actually opening it for write, which I suppose is supposed to create the file.  So I guess now I have to dig through permissions again.  I hate linux file permissions.

Ok, this time the Ubuntu GUI actually worked the way I expected it to.  I had to change permissions for Other on the cache directory to create and delete.  I don't know which "other" is trying to do it, though.  I don't know if Apache or PHP has its own user that I could set up or not.  If so, it would make sense to set permissions for just that user or it's group.  Of course, it looks like you can't do that on a list of random users, so you would have to make this other user the owner or something.  Oh, well.  I'm not worrying about it now.

Like I said in the beginning, the Zazzle Store Gallery seems more what I want.  The Zazzle Widget seems built around displaying a small number of items on a post or in the sidebar of your page, whereas the Zazzle Store Gallery seems built toward letting you display your entire zazzle gallery as the primary focus of a page, and that is what I want to do.  Because eventually I will have to merge cafepress and zazzle together into a single user interface.  I'll let you know how that works out.  In the meantime, I loaded the gallery plugin and it works fine.  It couldn't have been the permissions, because I only changed them for the one cache directory that the widget was running.  And the code changes couldn't have affected the gallery plugin either.  So the only change that makes sense is enabling curl.

So, that's it for today's adventure.  I hope it was helpful and that it will save you the pain I went through to get it working.

Monday, March 7, 2011

Wordpress troubles

I know I have a dry writing style.  I also tend to go into details that people don't really care about.  On top of all of that, I realize that you probably don't want to hear about my problems unless I have a solution that you might find useful.  So, the hidden 7 paragraph block below is my extremely long-winded version of the following paragraph...

I am trying to get a merchandising site set up using wordpress.  I had a hard time getting PHP installed to work with Apache, a hard time getting Wordpress to work properly, and a hard time getting MySql installed.  All of those hard times are because the mindset of Linux developers seems to be to make you do everything via command-line and to compile your own code.  I fixed those problems, but didn't mark down the solutions, so nothing I've got hidden is likely to help you beyond the fact that the default Apache web root seems to be /var/www on Ubuntu.  Anyway, after getting that all working, I had FTP permission problems then installed Zazzle Store Gallery, had problems with it, and finally installed Zazzle Widget and am having problems with it.

Click show if you want to see the long-winded version:

Well, I got WordPress installed on my system following their installation guide.  When I did, I found that Apache, by default, doesn't support PHP.  After hunting the web, it looked like I was going to have to recompile Apache to fix it.  I've complained MANY times to friends about the apparent mindset I see with Linux sites and programmers.  It almost seems to me that most of them are of the opinion that you should WANT to compile your own code, or run massive command lines scripts.  Many sites will give you 16 steps to accomplish something.  Often, this seems to be a task that would need to be done by almost everyone installing the given piece of software or whatever.  What I can never figure out is why they don't just create a single app, even if it's just a bash script (batch file for Microsoft users).  For me, that's the first thing I do when I read their examples, is create a bash script in case I have to run them again.
Ubuntu (meaning probably Canonical, the group supporting Ubuntu) seems to be trying to fight against this trend by automating the installations and updates.  Ubuntu has an app called the "Ubuntu Software Center" which is very similar to "Add/Remove Programs" under Windows, and another that works just like Windows Update.  But even the apps that make it into this system are missing things like a GUI.  For instance, I installed Apache through the Software Center, but it has no interface at all that I can find, I had to search the internet just to find out where the root was (/var/www, in case you were wondering) and I couldn't find any way to start or stop it.  Now, I imagine there could be another app written by some other group that is specifically a GUI interface to the server, but that would require me going through the Software Center and digging for it.  I don't see why the group that supports Apache in the first place doesn't have their own GUI and install it along with the server.

It seems to me that this is a widespread problem.  Of course, I'm just getting into Linux, so it's quite possible that the applications are thousands of times more user friendly than they used to be and I'm just catching it someplace in the middle.  But if the wider Linux community ever expects to convince Mac or Windows users to switch to Linux, this will be an even bigger obstacle than the general lack of support from vendors.  For instance, if a vendor of a major video game decides to add support for Linux, it's not going to matter if you have to recompile the code just to get it to work.  Your normal user isn't going to be able to or even want to handle this.

You know, though, that could be the point.  What this mindset seems to say to me is that the normal Linux app developer doesn't WANT to pull any users from Microsoft or Mac.  If you don't want to compile your own code and write your own scripts, you're not Linux material, and they don't want you there.

Anyway, I finally found a PHP plugin that the Ubuntu update manager could install.  Of course, then it still didn't work and I figured it was because I needed to restart the server.  As I said above, I didn't know how to restart it, so I rebooted the computer.  PHP started working, but the Wordpress admin told me that I didn't have a MySQL database set up.  Since modifying the config file to point to the MySQL database was one of the WordPress installation steps, I could have sworn I had already set that up, but maybe I didn't save it.  So I modified the configration file again and started it up.  It seemed to be working.

Then I did some searching for Zazzle plug-ins for WordPress.  I found one called Zazzle Store Gallery.  The installation is just supposed to be to copy the files to the WordPress plugin directory and then activate it through the admin.  Well, I copied the files, but the plugin didn't show up in the admin.  I rebooted, thinking maybe the web server needed to be restarted.  That didn't work, so I figured maybe something needed to be put in the database to get WordPress to list the plugin, so I deleted the directory and tried the install through the admin.

That failed as well.  It gave me errors about not being able to create the directories to install the plugin.  After 2 hours of searching to find out how to change permissions on the files (which may or may not be able to be done through the UI, I don't know) I realized that it was probably more likely an FTP issue, since the first thing the admin asked during the install was for my FTP server.  So I manually logged into the FTP server and tried to create a directory and, sure enough, it failed.

So, another round of hunting through the net for how to change the configuration on the FTP server.  It turned out to be a very simple setting, but I overlooked it somehow.  There is a setting (of course, in a config file that has to be manually modified) to allow all write operations, but it is right below several options dealing with anonymous access, so I somehow got it into my head that the setting was only referring to anonymous users.  I was wrong.

With that working, the plugin finally downloaded and installed properly.  But it doesn't work.  It didn't appear to do anything.  So I downloaded another one called Zazzle Widget.  That one doesn't work either.  It appears to be an error of some sort, since if I put it early in the stack of widgets, no widget below it displays.  So I am currently digging through the code, even though I've never used PHP before.  Luckily, it is similar enough to other languages that it's not too hard.  I've currently narrowed it down to the code that pulls the RSS feed from Zazzle, so I am now trying to figure out where the RSS feed code is, and whether I can figure out what the actual problem is.

So, now I am working through the code in Zazzle Widget.  I'll try to make the rest of this actually useful.

All of the widget files end up installed in wp-content/plugins/zazzle-widget in your wordpress folder.  For me, that means the full path (on Ubuntu) is /var/www/wp-content/plugins/zazzle-widget.  I started in zazzle_widet.php.  I've never used php, so I'm learning as I go.  But echo was used several times and was easy to figure out.  PHP commands end with a semicolon, dot appears to be some sort of string concatenation operator, at least with echo, and you can embed variables in a string by surrounding them with curly braces.  For example,

echo "Var1 value is: {$var1}<br>";

is the same  as

echo "Var1 value is " . $var1 . "<br>";

So to trace the execution path, I started sticking echo "**** HERE ****"; in the widget code and slowly moving it down the path.  I traced it through the ZazzleWidget function, and then into the widget function.  I got to this line
include (EZP_Functions::get_path() . 'zstore.php');
and my echo's worked before it but not after.  It seemed fairly obvious that this was incuding another file, so I loaded zstore.php into the editor and made it down to a line calling $rss->get($rssUrl) using echo, I verified that the url was correct and pasted it into a browser address box to make sure it worked.  I thought the rss portion was built into Wordpress or PHP itself, and I was getting echo results before and not after, so I started hunting down error trapping code to see if I could find out what error was ocurring.  I found this...

function customError($errno, $errstr) {
   echo "Error: [$errno] $errstr

   echo "Ending Script";


I pasted it in right before the call to $rss->get.  I'm really surprised it worked, because in the languages I have used before that had includes (assembly, C, and ASP), include inside of a routine means that the code is actually placed inside the routine by the compiler or interpreter.  In this case, that would mean that I now have a function nested inside of another function.  It may be an interesting note to keep in mind about PHP.

Anyway, the error was Error: [2] filemtime(): stat failed for /var/www/wp-content/plugins/zazzle-widget/cache/rsscache_2... This seemed to me that there was something wrong with the rss feed.  Perhaps zazzle's version didn't pass a timestamp according to some specification or something.  So I started digging for the rss code.  I found that the $rss variable was declared as a class called lastRSS.  This class is included (via a command called require_once) at the top from a file called lastRSS.php.  I don't know if it is just good practice, or if PHP requires that files have the same name as the classes, but it makes things easier.

I dug into lastRSS.php and found the code that is calling filemtime.  The code is checking to see if a cache directory is present.  If it is, it assumes that a file exists and tries to get the timestamp.  The problem appears to be that the file isn't there yet, because I haven't gotten it successfully yet.  So I changed the code to check for file existance first.  The new code is below.

    function Get ($rss_url) {
        $result = null;
        // If CACHE ENABLED
        if ($this->cache_dir != '') {
            $cache_file = $this->cache_dir . '/rsscache_' . md5($rss_url);
            if (file_exists($cache_file)) {
                $timedif = @(time() - filemtime($cache_file));
                if ($timedif < $this->cache_time) {
                    // cached file is fresh enough, return cached array
                    $result = unserialize(join('', file($cache_file)));
                    // set 'cached' to 1 only if cached file is correct
                    if ($result) $result['cached'] = 1;
            if (!$result) {
                // cached file is too old, create new
                $result = $this->Parse(urldecode($rss_url));
                echo "Parsed
                $serialized = serialize($result);
                if ($f = @fopen($cache_file, 'w')) {
                    fwrite ($f, $serialized, strlen($serialized));
                if ($result) $result['cached'] = 0;
        } else {
            // If CACHE DISABLED >> load and parse the file directly
            $result = $this->Parse(urldecode($rss_url));
            if ($result) $result['cached'] = 0;
        // return result
        return $result;

This replaces the entire Get function in lastRSS.php.  That's as far as I have gotten so far.  This let my traces work down to the Parse call.  So now I am working through that to see why it fails.  I'll deal with that in the next post.

Monday, February 28, 2011

Brand Consolidation

Well, I got into the social networking scene so that I wouldn't have to mess with my own website any longer.  But my brands are getting out of control.

I started another zazzle shop,*, so that I could get better versions of the t-shirts and bumper stickers than what I have on cafepress.  But there are whole lines of merchandise that zazzle just doesn't have.  I don't want to give someone a business card with both addresses, and I can only redirect my url (which I recently acquired) to one or the other.  So I'm going to have to set up a website that can sell products from both stores in a single location.

As for the photography, I've know for quite a while  that HFCSPhotography was a dead-end name.  Even people I know personally can't find it, because there's no easy-to-remember acronym behind the name, the letters don't spell anything you can pronounce, and F and S are two easy to confuse.  I had been trying to come up with some new name and a friend showed me a site called NameStation, which let me build domain names from large lists of words until I found one I liked.  I stuck "photo" in and ended up with two choices I liked; and  I like PhotoUprising better, and either one will work with targeted SEO and such.  But PhotoInterest will bring in more random search engine hits.  So I'm going to start working on rebranding as  If I can also find a way to have the branding change depending on the domain you hit, then I'll have both URL's work, and probably put PhotoUprising on marketing.  But if not, more traffic wins out of a name I like.

Unfortunately, and also one of the reasons I have to do this now, this means that I have to change my main facebook page, probably add another twitter feed, and I should really move my deviantART page.  If I am actively working on the site again, I can probably get away without deviantArt matching, but it's a dilution I could do without.  At the same time, I will lose all of the favorites and watchers I already have on deviantART if I switch, which will suck.

So, over the next few... month's, most likely... I will be changing things around.  This blog will probably remain the same.  I can't see creating a separate blog for BeadPimp, PhotoInterest, and my personal stuff.  I just can't see that I'll ever post that much.  At the same time, blogspot allows export of the blogs, so if I ever do post enough to justify splitting it out, I can.

Of course, one problem I have right now is that I'm not on any Microsoft systems at home any longer, but my old site is still  I've heard Mono handles very well, I just haven't tried it.  I'll probably go that direction with the photography site, simply because I have so much done already.  But I'm going to start out working with Apache and Wordpress for the BeadPimp merchandise.  If it's simple enough, maybe I'll convert the photography site over as well.

What it comes down to is that the social networking is a way for me to start truly working to get a little business going.  I wanted to make my life easier and avoid the hassles of running my own site.  But I'm not going to be able to run the photography site or the BeadPimp merchandise with it scattered all over the inter-world.  So I have to build a front door for both sides.  This time, I'm going to use as many pre-built pieces as I can, but I'm going to have to do some work regardless.  I'll still be posting to the blog and I'll still be posting on deviantART and facebook, so nothing's going to change much yet.  But keep an eye out, and I'll let you know when you should change any links.

Monday, February 21, 2011

deviantART Posting Tracker

A Macaw on deviantART
If you've read my post about my deviantART page, you'll know I'm trying to use it to promote my photos.  Part of that promotion is to get my photos in as many groups as possible.

There are other ways for people to see them.  As I post them, they show up on the main page as the "newest deviations".  They probably roll off of that page in a matter of minutes, though, since so many people post.  They will also show up if someone searches for particular keywords I set, or if they are viewing the "random" lists, although hits from either of those will be few and far between.  So I post to groups so that anyone watching the group gets a special notice about the image being posted.  Some of those groups have a thousand or more watchers, so that's a fairly large audience.  The problem is that each of those groups have their own posting guidelines and, more importantly, their own limits on posting frequency.  Keeping track of that got out of hand very quickly, not to mention just keeping track of which deviations I had already submitted to which group.

So I decided to start a spreadsheet to keep track of it.  That lasted one day.  My computer died and Open Office didn't even keep an auto-saved copy.  So I decided to learn MySQL.  It's not that different from Microsoft SQL, so it wasn't that hard.  I created my tables, one for groups, one for submissions, and one for status descriptions.  The groups table has a "submissionInterval" field that lets me keep track of how often I can post to a group.  In addition to the field telling me which group I submitted to, the submissions table has a field to keep track of the date I posted an image, which image I posted, and whether it was accepted, declined, or expired.  And I wrote scripts to log a submisssion, mark a submission accepted or declined, and to list what I submitted to a group or which groups I submitted an image to.  For all of the things I needed to learn, like that MySQL doesn't seem to have an equivalent for TSQL's IsNull routine, I used the online MySQL reference manual.  It's a great resource.  So far so good.

But, since I don't have Microsoft SQL, I also don't have Query Analyzer.  So I had to find a way to execute the scripts easily.  I recalled that the internet entries on how to create MySQL database also mentioned that the MySQL command-line interface would allow you to run queries scripts.  So I looked that up and found this.  A quick cut-and-paste job and I had a file for each of my scripts.  None of them would run, but I knew how to fix that.  chmod to the rescue.  Of course, I couldn't remember the syntax, so another search result to the rescue.

It's worked out well so far.  I can now run "./" to list out each of the groups that I haven't posted in recently enough to violate their policies.  It's sorted so the ones with the oldest posts are on top, so I can spread my posts out if possible.  I can run "./" to see what images I have posted to a given group, so I don't try and post again.  Or I can run "./" to see what groups I have submitted a given image to.  I can run "./" to log the submission, which will make the given group roll off of my canSubmit list.  Finally, I can run "./" or "./" when the group's reply comes in.

It's not perfect, obviously.  The output of any of the scripts isn't formatted as neatly as it would be inside the MySQL tool.  And it's still a lot of work.  A perfect solution would be fully automated.  I would just select the groups that a given image is suitable for as soon as I upload it and it would go in a queue.  Whenever the submission delay for a group expires, the tool would automatically select the next image from that group's queue and submit it.

But, that will have to wait.  The whole point of going to deviantART, this blog, facebook, etc. is so that I don't have to spend so much time supporting an app like that.  It's really not that hard to initially write, but every time deviantART changes their page a little, I would have to modify the app.  If I ever write it, I'll let you know, but don't hold your breath.

Monday, February 14, 2011

My wife's art frames

Here we are on Valentine's day with another project I've been spending a bit of time on, frames for my wife's art.

My wife took Painting 1 and Design 1 at the local community college last semester.  She's wants to work toward some sort of Interior Design degree or something.  Her ultimate goal is to flip houses.  Buy crappy ones, fix them up and do some cool interior design magic, and then sell them as high-end.

She's does do pretty well.  To the right is one of the first designs she did.  I think her requirement was to use 9 different colors, each one in it's own contiguous region, so she couldn't color the paper triangles.  She's sold this one after agreeing to make a companion piece.

Her paintings are pretty good as well.  To the left is a chinese opera character she found online and painted.  Nice colors.

Anyway, she's too cheap to buy canvas.  So she has been painting and designing on hardboard instead.  It's only 1/4 inch thick or something, so it doesn't look much like a normal art frame.  She then buys 1x2 from Lowe's and I have to make a frame for her.  The first one was not great.  But in all fairness, I didn't do it.  She measured and told me where to cut.

Let me tell you about her measurements.  We have two tall narrow windows in our bedroom.  At one point, she wanted to paint the bedroom this aqua, green color.  We had custom blinds made (again ordered at Lowe's, I believe) to fit the windows.  We went after I got off of work, and she said she had measured the windows before we left.  When we got to the store and the sales lady asked for the size, I knew something was up when my wife said it was exactly 1 foot.  I asked her again, and she said yeah, it was exactly 1 foot.  So I let it go.  When the blinds came in, they didn't fit in the window at all.  As it turned out, when my wife said "1 foot", she meant one of her feet, which are a few inches off of 12 inches.  She had stuck her foot up on the windowsill and measured that way.

Anyway, this time she had the boards marked and just wanted me to cut them.  They were close, but not exact, as the picture at right shows.  The next one I cut, I did 45 degree mitered corners.  Still not exact, but this time it was because we had Lowe's cut the hardboard for us.  Their panel saw isn't exactly 90 degrees, so the board wasn't exactly square.  It still wasn't bad, and since it was just for a class, I didn't worry about it too much.  But since this last one is going to a paying customer, I put more time into it.  I cut the hardboard myself and made it an eighth of an inch too large tall and wide.  I then adjusted the miter saw as close to square up and down as I could get it, and as close to exactly 45 as I could get.

I don't have any way to glue the frame up.  If I have to do it again, I will build a jig and make them keyed miter joints. (See here)  This will make them strong enough that I can put them together before having to attach them to the hardboard.  As it is, I have to glue and nail one edge of the frame at a time to the hardboard.  It makes it very hard to get them at 90 degrees.  So I'm not positive of whether the gaps in the frame are because I didn't get the miter saw exactly 45 or because I didn't get them exactly 90 when I nailed and glued.

Anyway, I clamped it all together overnight and then put a flush trim bit in the router.  The bearing rides along the frame and the blades then cut the hardboard flush with the frame.  Since hardboard is basically paper, the top edge wasn't real clean.  But it took off all the extra "fuzz" or whatever by dragging my knife backward along the edge, just scraping it off.  Don't try to go forward or you'll cut into the hardboard.  My wife put wood filler in all of the gaps that needed it and then sanded down the edges to get it smoother.  She then painted the whole thing white (gesso?) and you can't tell from any distance that it isn't a single piece.  [ed.  While previewing this, she said that she just used standard primer.  Artist's gesso is too expensive.]

Hopefully, I won't be making too many of these.  But I know I have at least one more to make.  She sold the painting on the left to a friend of mine.  It's a watercolor with the paper mounted to hardboard.  The borders on top and bottom are some thin strips of scrap I had in the woodshop, cedar I think, although I don't remember for sure.  The pattern on the strips is sharpie.  Anyway, she sold this one, and the woman that bought it wants her to mimic another painting she has always wanted.  It is a picture of 3 belly dancers, and the artist wants $300 for a print and over $1000 for the painting.  My wife thinks she can do something similar and will only charge her around $300 or so for the painting.  When she gets ready to do it, the client (who was in belly dancing class until she hurt her foot in some unrelated incident) will get two other belly dancers she knows together for a similar pose and I'll photograph it for my wife to copy.  So I get to photo belly dancers. :)

So, that's why I make frames for my wife.  The next post should be the last in this series.  Have a happy Valentine's Day, and I'll leave you with some other images.  Below are some of her other paintings she did for her painting class and one for her design class.

The berries are a copy of a photo I took in the back yard.

She put this together specifically for the class painting.  It's a pair of shoes for each of the family members.
 This is a painting of another of my photos.
This one is for the design class and is based on a spiral staircase she found online somewhere.
This is another one for the design class.  It is cut construction paper.  The black circles are sitting on top of white circles to get the outline.  The rest are all cut from white paper, and a metalic edge to frame it all.

Monday, February 7, 2011


And so I continue with my active projects list, and prove my geekiness.  Today, I write about DND.

Once a month, for about the last 15 years, a group of friends and I get together in one couple's living room and enter a world of fantasy.  Now, before you get too many visuals in your head, we're not as hard-core as the people your mother warned you about.  We don't wear costumes, and we don't talk in fake accents.  Most of the time, we don't even "role play" as most gamers would consider it, since we are not in the first-person mode with our characters.  We almost exclusively say that our characters are saying something or asking someone something instead of actually asking it or saying it.

For those of you still reading we use the 3.5 system.  We haven't even considered trying 4.0 yet.  We have too many books and too much knowledge tied up in 3.5.  Until about 6 months ago, I was DM'ing a campaign from Alderac Entertainment Group called "The World's Largest Dungeon".  It comes in a book 840 pages long, with something like 16 huge full-color maps.  I had to stop DM'ing because of conflicts with work.  I just didn't have time to prepare for the next gaming session and work on my mapping app, etc.  But when we stopped, my players had only gotten through about three quarters of the initial map.

DM'ing any campaign is a lot of work.  It's telling a story, and to tell it well, you need to not be doing it on the fly.  It's the first time I had seriously tried DM'ing, and I probably wasn't doing too well anyway.  Especially toward the end, there were too many times that my players were getting to places that I hadn't read well enough and wasn't ready to run.  It also doesn't help that DND is often like a broken "choose your own adventure" book.  The characters will quite often choose the option that you didn't prepare adequately for because you didn't think they would choose that option.  A good DM is either prepared to run it anyway, or prepares in advance ways to prevent that option from actually coming up, without seeming to railroad the players.  In my case, I hadn't done either.  The main thing they did to me is that they are supposed to get info from several monsters/NPCs, but instead they killed anything that moved and didn't manage to talk to any of them.

But, I think I have a way around that.  In the off time, I have come up with another option to get them back on track.  I've advanced the story built into the dungeon further than the original writers had it and shifted some things around.  I've even figured out a way to get the characters the info they need before they shoot the messenger.  However, even though I have come up with the basic story line I will use, I still have to work out the details of where the messenger is, what his stats are, what to do if the character somehow head in what is now a deadly direction before getting the info, etc.

And even without this change, it's a large dungeon.  A large, sometimes poorly written dungeon.  Not poorly written in the sense of bad grammar and such, so much as written by multiple people that didn't necessarily talk to each other (each chapter/map section was written by a different author).  And there are things that just don't make sense that I am trying to fill in.  For instance (and any DM can tell you that this happens a LOT in the literature of any campaign) there is a lot of information about what happened in the dungeon hundreds of years ago.  But there is no way in the campaign to get that information to your players.  Then there's the part about the titan guarding the entrance, but who has somehow gone unnoticed and undiscovered for eons.  Yeah, that makes sense.

So, long story short, I won't have the time to deal with a campaign of this magnitude until I get done with my current project at work and get some free time.

In the meantime, another member of our group has started DM'ing a campaign set in the Kingdoms of Kalamar.  It's a campaign setting none of us has played in before.  Also, this DM like's to "tweak" the rules a bit.  We are currently using the vitality/wound points system and the spell points system from Unearthed Arcana.  For you that don't know, it basically means that our characters can die much easier, and figuring out magic is harder than it was before.  At least the magic system seems like it might actually be an advantage.

Aside from that, I am running a much smaller campaign with only two players via video conference.  A couple of people that played with us years ago got out of it because they couldn't handle the hours.  (Our once-a-month game starts around noon on Saturday and runs until 3 or 4 in the morning, normally.)  Recently, they asked me to DM quick 2 hour sessions every couple of weeks via video conference.  So far, it has been fairly simple.  I've been using the free short adventures provided on Wizards of the Coast's website.  I think I have even come up with an overarching theme to tie the many disparate adventures together into a campaign.  We'll see how that works.  Even if I don't, they are enjoying the individual adventures, I'm doing better at the story telling and keeping them alive, and the small adventures don't need anywhere near the work from me that the huge dungeon was needing.  So far, we haven't even worried about mapping it out.

The main issue this campaign is trying to get video conferencing working with Ubuntu.  SIP doesn't work, Meebo doesn't work (and just uses Google Talk), Google Talk seems to work, but doesn't allow more then 2 parties, and skype's multi-party conferencing doesn't work with Linux, only with Windows.  I'd really like to toss the whole open-protocol, centralized server model and get a single stand-alone, peer-to-peer client that is completely configurable in ports and whatnot, and is multi-platform (because my players are on windows).  If it is just straight tcp/ip, this port and this address, then I can make sure my router is set up to pass the right traffic and I don't have to worry about whether the servers are up or not.  So if any of you have any ideas on this, let me know.

Monday, January 31, 2011

My wife's drafting table

Time for another project post.  You heard about my welding last time with my garden arbor.  Today, we talk about the drafting table I am welding for my wife.

For those of you that don't actually weld, there is a list of welding terms here.  You might want to refer to it eventually. :)

My wife took painting 1 and design 1 at the local community college this passed semester.  Now she wants a drafting table she can do her work on, but doesn't want to pay for it.  Since I'm welding now, we decided I should build her one.  Against her better judgment, we went to the local scrap yard for supplies.  (That's another thing I love about welding.  It's hard to find wood that has been sitting out in the weather for months in a dump and still use it.  But metal, for the most part, is just as good now as it was to start with.)  She didn't want to go, because she didn't think we'd find anything that looked good enough.

Of course, once we got there it was like everything had "Sale" signs on it and she went nuts.  We ended up finding some light-weight angle iron.  I honestly think it is too thin for the size of drafting table.  She wants this table 3ft by 5ft.  And with just a square frame of this, it twists very easily.  I'll fill the top with MDF, so that should stiffen it up quite a bit, but when she is raising and lowering the top, the bottom may twist and get wonky.  So I'll probably have to reinforce sections somewhere, but I'll worry about that later.

These are the two pieces I have completed so far.  The bottom is just a rectangular frame with pipes welded on for legs.  The top is the same thing, inverted.

Original Weld Quality
My welds were very ugly at first.  They're strong enough, and I've ground out some of them on the bottom piece to make sure the two pieces of metal have fused properly, but they're still ugly.  My welder sputters and skips, etc.  I think it is probably that I am moving too fast, or otherwise pulling the wire out of the puddle.  At least, that was one of the issues that caused the same symptoms when I was in the welding class.  Click on the image to the right to see a blown-up version, if you can't see what I mean in this one.  The width of the bead is uneven, it's rough in places, etc.

New, better weld quality
But then, something happened.  The first thing I noticed is that I started seeing a lot of porosity in my weld.  I don't have a picture of that, but for those that don't know, it means the weld starts looking like a sponge.  I checked my gas and everything looked right.  I checked my nozzle, and it had a little spatter on it, but not much and taking it off didn't make any difference.  I turned the gas up a bit to see if that would fix it.  It seemed to help a bit, although not much.  I also started seeing a drop of metal form on the end of the wire before it got to the puddle.  At this point, I was trying to weld up the side of my joint, so gravity wasn't pulling the drop into the puddle.  I decided to stand up and stretch and mess around a bit.  I seemed to recall that the wire melting early like that meant that the voltage was too high.  So I lowered the voltage and tried again.  It still did the same thing.  In MIG welding, your voltage controls your arc length.  Basically, how far away from the metal you can be while welding.  Since I had turned the voltage down, I moved a little closer to the joint.

And suddenly, my welds looked completely different.  Now, they are nice and smooth, no stuttering or skipping or anything like that.  Even the sound of the arc was better, going from a crackle to a hiss.  Sure, there are still flaws, but compared to my other welds, it's perfect.

Weld ground out.  Note the pinholes on the left
I ground out one.  I want to tell you that the vertical pass was actually done with the old settings, not the new, but I can't in all honesty.  I think it was, but I'm not sure.  There are pinholes in the vertical pass, but even then, the percentage area is small.  Sure, it will probably fail a bend test or something, but it will still hold, and my wife isn't going to be jumping up and down on this anyway (or she'd better not).  And the horizontal pass is completely fused, with no defects that I can see.  (Oh, and these were not welded vertical and horizontal, they were both welded flat.)

For anyone wondering, that large hole on the left hand side is the kerf from the grinder as I cut the bottom of the angle iron off.  On the bottom frame of the drafting table, I just overlapped the ends of the angle iron, so the sides are lower than the front and back.  On the top part, I decided to put more effort into the fabrication, so on the short pieces, I cut out a notch.  This allowed the end of the longer piece to fit in and be welded in place.  The image to the right is a view of a corner where I haven't welded the outside yet.  I ran out of wire, and haven't installed the new roll yet.  You can see where I cut out the bottom of the angle and fitted the other piece in.  You can also see that I'm barely leaving any gap and haven't beveled the edges at all.  The reason for notching it instead of overlapping it was to give me a flat surface, and I still can get one on the bottom if I grind my welds out.  But if I had thought about it, I could have beveled the edges and only welded from the outside.  That would have left me a flat surface on the inside as well.  But, I'm only using 1/2 inch or 3/4 inch MDF on the inside anyway, so I'll be welding some sort of riser to the inside to get the MDF above the edge.  That means the MDF will be above the inside welds and it won't cause a problem.

So, that's where I stand on the drafting table.  My next steps will be to make brackets to weld on the front corners, drill a hole, and stick a bolt through to form a hinge.  I still haven't decided how to make the desk raise or lower.  I've actually come up with several methods, and they won't be too hard to raise, but it will take two people to lower.  This is because the desk is too large to allow my wife to reach a support mounted in the middle, and it's also too large and flimsy to allow a support on just one side.  I'll keep you updated on what I decide to do, and how it turns out.