A short video covering the blast etching process I used on a Pelican 1750 and 1400 case.
Monday, December 30, 2013
Sunday, December 15, 2013
Sunday, November 17, 2013
Tormach PCNC 1100 - Comments on Delivery and Setup
A few comments on Tormach PCNC 1100
delivery and setup with some special notes on getting the machine
down a sloped driveway.
Sunday, November 10, 2013
Spray Cans - Composition, Function and Safety
I made a short video going over a few points about spray cans; how they work and some safety issues. A couple of lesser know items are reviewed such as FDA not regulating cosmetic products.
Sunday, July 28, 2013
What is a Software Engineer?
Suppose you asked someone what they did for a living and they said, "I am a hammer". You might find this strange. You might also find it strange for them to say, "I am a table saw". However it would be quite normal for them to answer saying, "I am a carpenter".
Far to often we confuse our proficiencies with the tools of our trade with our actual profession. This is not a good outlook. I use the tool not the other way around. I am not the programming language I am the software engineer.
So why bring this topic up? Because anyone who believes they are defined by the skills they have in their tools will be limited by those tools. Remember this when you get the chance to learn something new.
Wednesday, July 17, 2013
Restarting old software projects
We do not always get to pick the project we work on |
Find all of the resources involved with the old project.
This would obviously include the source for the project. It also includes build scripts, tests, requirements docs, and any other support files.In addition to the files which make up the project it is useful if you can find the systems which were involved in previous development such as build servers and developer workstations. Some parts of the project may not have made it into source control or it may have an unexpected prerequisite to build or run. These may be identified by examining the old build/dev boxes.
You may also try to track down any email chains involving the project. Even if all of the people involved in the original project are gone the company may have kept an archive of their inboxs in case they needed to be referenced for just this purpose.
Determine the state of the project
Once you have all the bits of the project together it is time to determine where the project was when it stopped. This will accomplish a couple of things. First it will help you and those who want to restart the project determine if the restart is actually worth the time. Second it will keep you from accidentally rewriting functionality which is already present but not immediately obvious.
Setup or create a build process
If the project has a set of build scripts or some manner of build process it should be reinstated on a nightly or continuous integration build machine. If not then a process should be created.
If this is an internal tool then it should copy its binaries (or other end user useful bits) to a build repository. If this project has installers or some other more involved deployment system then these deliverables should be built as part of the build process and copied out to your build repository.
A build created on a dev workstation should only be used by a dev. Only those builds created by a build server (which should be labeling the builds) should be distributed, handed to QA, or shipped to customers. Adhereing to this rule will prevent one off and otherwise unrepeatable builds from entering the wild.
If this is an internal tool then it should copy its binaries (or other end user useful bits) to a build repository. If this project has installers or some other more involved deployment system then these deliverables should be built as part of the build process and copied out to your build repository.
A build created on a dev workstation should only be used by a dev. Only those builds created by a build server (which should be labeling the builds) should be distributed, handed to QA, or shipped to customers. Adhereing to this rule will prevent one off and otherwise unrepeatable builds from entering the wild.
Are there unit tests for any part of this project?
If you should be so lucky then these are the next items up to reinstate. Tests will help give you an idea of how the various parts of the project are supposed to work (or expected to break) as intended by those who wrote them. They can also catch fatal flaws you might introduce in the future due to a lack of knowledge of how a particular component is intended to be used.
Deploy a build for QA
Using the output of your now functioning build process deploy an instance of this project and the test it. Validate the current level of functionality of the project. If you have a bug tracking system which has records for this old project then check any obvious issues against any open defects.
The goal of this step is two fold. First is to ensure the project is still in sync with any requirements documents and bug tracking systems you may have. Second is to survey for yourself the true current state of the project with a build and deployment which you can now reproduce.
A quick note about build reproducibility. You should always ensure your build process can exactly recreate any arbitrary build which has come before. There are several insidious things which could prevent this ability with the simplest example being files not under source control (possibly some infrequently modified data files or libraries). Should a defect be introduced into files not under source control this defect will effect all new builds including those of older versions or on branches.
The goal of this step is two fold. First is to ensure the project is still in sync with any requirements documents and bug tracking systems you may have. Second is to survey for yourself the true current state of the project with a build and deployment which you can now reproduce.
A quick note about build reproducibility. You should always ensure your build process can exactly recreate any arbitrary build which has come before. There are several insidious things which could prevent this ability with the simplest example being files not under source control (possibly some infrequently modified data files or libraries). Should a defect be introduced into files not under source control this defect will effect all new builds including those of older versions or on branches.
Validate the restart of the project
This point may arise earlier based on what you find along the way, if not then now is the time to consider whether restarting the project is worth it.
It may turn out the project doesn't actually do what project management thought it did. Or perhaps it does do what project management thought but is at a lower level of development than expected. A great number or severity of defects may also make the project a non starter. The project may have some big external dependency which is difficult to support or expensive to license. Even if none of the previous apply it may be difficult to add the new features project management wants to the project given the way it has been designed and built.
The last and possibly most important point
If the objective of restarting an old project is to add some small feature to an old but operational deployment you may be tempted to just make the change to the source, build on your local system, and manually update the binaries on the production system. This is very bad idea.
If you successfully pull off the update, then all is well. If, however, there are complications it will be very difficult to determine if the issue is caused directly by your update, indirectly through its interaction with other parts of the system, or if your update had nothing to do with the new issue at all. Additionally if you made a manual update to a system which is normally deployed via an installer you have now created a deployment which you may not be able to reproduce thereby making QA by another group virtually impossible.
Thursday, July 11, 2013
Engine\Shop cranes and their unexpected uses
Parts and Operation
Crane Parts |
Notes on Assembly
The assembly instructions for these types of shop cranes indicate the mast is to be attached before the stanchions. In some cases you may find if you follow these instructions the stanchions's holes will not line up with the mast and the base. I believe in these cases the stanchions are intended to be preloaded by the mast. Just loosen the bolts holding the mast to the base, attach the stanchions, and then tighten the mast bolts.Lifting stuff
engine crane lifting a washing machine |
Lifting with these cranes it not complex but there are a few things to be aware of.
The crane even without a load is quite hefty weighing in at upwards of 150lbs.
Since normal rope can lift significant loads and is readily available it is a nice solution for lifting things around the house. While convenient rope can stretch quite a bit when loaded. If you lift with rope be certain to take this into account, otherwise you may discover you cannot lift to the height you need because the line has stretched too much.
The load you are lifting must have its center of mass inside of the footprint of the crane. Otherwise the crane will be tip over.
The orientation of the load may change as it is lifted. You may discover as you raise the load your attachment points are not in as ideal a position as you would like. This is why it is important to inspect the load as it is being raised. The sooner the issue is found the shorter the distance you will have to lower it back down.
If you are moving things inside the house be aware of the load at the wheels of your crane. When the arms are down the wheels at the front of the base are not used (they are off the ground).
Top: arms up. Bottom: arms down (not the floating wheels) |
This means the weight of the load (and the crane) is distributed on 4 wheels. If the floor is not level you will be on 3 wheels. Some interior floors may not react well to the pressures the wheels of the lift will put on them.
Thursday, July 4, 2013
Sunday, June 30, 2013
Tuesday, June 25, 2013
Safety first... and second, and probably third
my injured lineman's tool |
After I was done with the sidetracking work I turned the breaker back off in preparation for wiring the lights up, no problems here either. Using my lineman's tool I then cut the Romex line I would be reworking to run my new lights... problems.
Immediately I had lights, not of the useful overhead lighting kind, along with the popping and hissing noises which accompany shorting a live wire. I was also working on a ladder, which in this case functioned as an unnecessary excitement multiplier, which I ungracefully abandoned. The wire was roasted and my tool now had a notch of metal blasted out by the short circuit arc.
closeup showing missing metal |
But the circuit breaker was off. Why was there still power?
Simple. I had turned off the wrong circuit breaker. The breaker I shut off did not have any visual manifestations which would indicate I had gotten the wrong one. So I proceeded with my work. The error was not verifying the power was off at the place and time of the work. Had I checked the line right before starting work again (I had several tools which would do this for me) I would have caught the problem.
Instead I am down one pair of pliers. A small price considering other possible outcomes.
Sunday, June 2, 2013
When you have the wrong size heat shrink tubing
The Task
This combination headphone/microphone line has a break in its outer casing.The broken casing |
The Solution
Heat shrink tubing is perfect for this issue, expect I did not have a size of tubing on hand which would fit over the end connections of this wire and shrink down to a size necessary to grip the line.The line could be cut and the tubing slid over it but this would entail reconnecting 4 electric lines and that is just a hassle.
I opted to use a larger diameter tubing and the build up the area to be covered with electrical tape. The tape alone would not be the best solution for this issue as unprotected it is likely to unravel.
Line prior to shrinking |
After the line was taped the tubing was placed and heated. Ideally I would have used white tubing to match the line but this was all I could find without the trouble of ordering more.
The finished line |
Friday, May 10, 2013
Ultrasonic cleaners
an ultrasonic cleaner |
Overview
Ultrasonic cleaners will impart their cleaning action to the objects submerged (normally in water) inside them. As such you will only be able to effectively clean items which will fit inside the cleaner. Items with unusual aspect ratios (such as rifle barrels) will likely require a more specialized unit as their shape will not be as common.Some units will also have heaters for heating the cleaning solution. This is an excellent feature and greatly accelerates the cleaning process. The unit pictured at the top of this page will heat the cleaning solution to about 176F (80C). For comparison most residential water heaters will heat your hot water supply to 120-140F. If you use the heating function some of the cleaning solution may evaporate from the unit and condense on the inside of the lid. Thus care should be taken when removing the lid especially if the condensate may contain corrosives (more on this later).
Cleaners will generally come with some type of wire basket for adding and removing items without getting your hands in the cleaning solution. In addition larger units will have a drain valve for emptying the cleaning solution when it becomes fouled or unusable.
cleaner interior |
Usage
Simply place the items inside the cleaner, then turn it on or set the timer. The unit does not need supervision. Certain types of items are more easily cleaned in these cleaners than by other methods. Objects having intricate shape or edges cleaning brushes could get caught on are good candidates for ultrasonic cleaning.electric razor blade assemblies are easily cleaned in an ultrasonic cleaner |
cleaner drain valve |
Ultrasonic cleaners come in a variety of sizes and prices. The one picture in the article runs about $400. Other smaller units can be less expensive but may not come with a heating function.
Wednesday, May 8, 2013
'Exception' does not denote 'Infrequent Occurrence”
NOTE: this will generally pertain to C# but applies to any programming language which uses similar exception handling (for example Java). This article covers a few misconceptions about exceptions and is not intended as a complete reference. In depth study of this important programming aspect is highly recommended.
Overview
The exceptions a method throws are as
important as its parameters or return value. They are part of your
contract with the user, even if you are not required to declare them
as part of your method definitions (as you are in Java). Too often
methods are completely written before any thought is given to the exceptions it should throw. This unfortunate behavior leads to a less than ideal interface for the user.
Many developers believe, and in many
cases are taught, exceptions exist to handle rare or infrequent
conditions encountered during execution. The truth is as developers
we have no control over the circumstances our code is used in beyond
the compiler enforcing the existence of our parameters. As such we
can never say what the frequency of any use case may be. Thus we can
never say if any given case is rare or common.
Usage
The correct use of exceptions is to
convey our inability to keep our contract with the user as defined by
our method signature. Let us consider the following method signature
from the Int32 type:
public static int Parse(string s)
This method takes a string
representation of an integer and returns its integer representation.
Viewing the documentation reveals it throws the following exceptions:
ArgumentNullException – thrown when s
is null.
FormatException – thrown when s
cannot be converted to an int.
OverflowException – thrown when the
representation of s is beyond the capacity of an Int32 to represent.
Each of these exceptions represents a
condition which prevents the method from honoring its contract,
returning an integer representation of the string parameter, to the user. There is a different exception for
each semantically meaningful mode of failure. That is to say each
exception represents a different reason the conversion failed giving
the caller the ability to make a meaningful decision about how to
proceed. The OverflowException can represent failure due to either a
value above or below what can be represented by an Int32. As the user
would not take different actions based on whether the
value is too big or too small we have just one exception to represent
both instead of an OverflowHighException and an OverflowLowException.
Example
Using these ideas let us design our own
method. Let us suppose we have a type which represents a temperature
probe. We might start by writing a class method with the signature:
public float GetTemperature()
[Note: normally we would use a property here but for demonstration purposes we will make this a method. Also, interestingly enough, the CLR doesn't know about properties so C# converts them into methods during compilation]
What exceptions should this method
throw? Anything which violates our contract with the user should be
represented by an exception. In this case any condition which would
prevent us from returning a temperature will need an exception. We
could start with the following:
TemperatureProbeNotAvailableException – thrown if our connection to the probe is lost.
TemperatureOffScaleException – thrown if the
probe provides a value beyond what its specification states it can
accurately measure.
Previously when considering the Parse
method we said there was no need to have multiple exceptions to
represent the high and low possibilities for the OverflowException.
Here we also have a single exception to represent an out of range
condition. Considering further is there any action our users might
wish to take based on whether the temperature probe is off scale high
vs low? In this case there is.
If the probe were attached to a heating or cooling system knowing which direction the temperature
is off scale would be very meaningful information. For a more awesome
example let us say this was a very high temperature probe in the
exhaust of a gas turbine engine. Many such probes do not operate
correctly until they reach a minimum temperature well above normal
ambient. An off scale low condition might be normal while the engine
was offline or idle but an off scale high might indicate the engine was running
beyond specification and should be throttled down.
Since the direction of the off scale condition is
potentially meaningful to the user we should provide exceptions for
these conditions.
public class TemperatureOffScaleHighException
: TemperatureOffScaleException
public class TemperatureOffScaleLowException :
TemperatureOffScaleException
Though the off scale direction of the
temperature probe could be useful to
the user this might not always be the case. By extending the high
and low exceptions from the TemperatureOffScaleException we give the
user a choice If they do not care about the direction of the off
scale condition they can choose to catch the base
TemperatureOffScaleException. Otherwise if they have code to handle
the high and low conditions differently they may catch these derived
exceptions in separate catch blocks and deal with them as they see
fit.
public static bool TryParse(string s, out int result)
This method does not throw a FormatException. Instead if will return a boolean indicating if the conversion was successful and if so it will provide the converted value via the result out parameter. By using a boolean instead of an exception this call avoids the cost associated with handling an exception.
Does this method keep its contract with its user? Yes it does.
Whereas the Parse method implies by its signature it will return a converted value TryParse implies it will attempt a conversion. This distinction in naming is important in creating an API your users will be able to easily understand.
A simple look through the FCL will demonstrate the occurrence of TryX is very limited. While the TryX methods seem to match the X method in capacity and excel it in speed it fails in code simplicity. The code necessary to support the TryX method is more cumbersome than the a simple X method.
Aren't Exceptions Time Expensive?
Depending on the environment the throwing of exceptions can be time expensive, especially if they repeatedly do so in tight loops. The previously mentioned Int32 type addresses this with the TryParse method.
This method does not throw a FormatException. Instead if will return a boolean indicating if the conversion was successful and if so it will provide the converted value via the result out parameter. By using a boolean instead of an exception this call avoids the cost associated with handling an exception.
Does this method keep its contract with its user? Yes it does.
Whereas the Parse method implies by its signature it will return a converted value TryParse implies it will attempt a conversion. This distinction in naming is important in creating an API your users will be able to easily understand.
A simple look through the FCL will demonstrate the occurrence of TryX is very limited. While the TryX methods seem to match the X method in capacity and excel it in speed it fails in code simplicity. The code necessary to support the TryX method is more cumbersome than the a simple X method.
Conclusion
There are various opinions about the role of exceptions and how they are used. What I would like to convey here is exceptions are an important yet overlooked aspect of development in environments which support them. A more in depth study than what is presented here is recommended though simply considering them at the outset of development instead of as a postscript will help in API design.
Monday, May 6, 2013
Dealing with partially lighting gas burners
The patient needing attention |
Overview and Operation
stove with the top removed |
Each of the four knobs for the burners and the one for the oven all open valves off of this line to supply fuel to their respective elements. When you turn on a burner fuel travels down its supply line, pulls some air in (more on this later), and fills the burner element. Turning the knob on also starts the igniters located in between the burners which share it (both igniters fire regardless of which burner you are lighting).
closeup of the ignition flame ports |
Each burner has a set of flame ignition ports on the side facing its igniter. Fuel from these ports travels down a hollow tube to the igniter. Once lit the flame travels up the tube to the ports on the burner. From here the flame travels up to the closest main burner ports and then around until all of the element is lit.
Problems and how to clean them
Assuming your ingiters are working (you can hear if they are firing and if they are not you have an issue which will not be covered here) the most likely cause of the burner either failing to light or not lighting completely is ash build up in the flame ports. To fix this you simply need to remove and clean the burner element. For my stove the elements can be removed without tools.
Start by removing the spring clip for the burner. Then rotate the burner until it is free of its supports and then slide it off of its fuel nozzle With the element free simply clean it with a stiff brush then blast some compressed air through the gas inlet. When cleaning the burner don't forget to clean the vertical ignition ports on the side in addition to the horizontal main ports at the top. Do not use any tools which could change the shape of the flame ports. Marring the ports on your burner will give you other issues not addressable with cleaning. You will want to use the compressed air outside as it can blast a surprising amount of ash out of the burner.
Elements can acquire a good deal of grease and other nastiness on them over time. Unless the offending matter is blocking a port it is not necessary to remove it. If you do choose to do a deep cleaning of a burner remember it must be completely rinsed and dry before it is re-installed.
Why is there a slot in the fuel line?
air induction port |
These port are intentional. All combustion requires fuel (in this case natural gas) and an oxidizer (normal air). When gas passes through this segment of tubing it creates an area of low pressure around this port (via venturi effect) and pulls in the surrounding air. This fuel air mix is delivered to the burner for combustion.
Normally these ports are too far from any opening in the stove top to get dirty so you likely will not need to clean them. Just be aware of them when working on the stove as anything blocking or interfering with them will cause issues.
Monday, April 15, 2013
Going Tankless
NOTE: this will be a discussion of fuel
based tankless units. Electric units are available but due to the
cost of electricity and the massive wiring issues involved with
installing one I will not be addressing them here.
Tankless water heaters have been used
for many years in other parts of the world but are only recently
becoming a more common choice for US residential homes. As the name
implies these devices provide hot water without storing it in a tank.
They are more energy efficient than tank based heaters but there are
some things to consider before installing one.
Traditional 50 Gallon Natural Gas Water Heater |
Why tanks were used in the first place
Water has a very high specific heat. This means you need a lot of energy to make its temperature
increase. As a comparison the amount of energy needed to raise the
temperature of water 60 degrees would raise the temperature of the
same weight of aluminum by 279 degrees. This makes water an excellent
coolant but also very difficult to make ready for use in showers and
dishwashers.
So the tank based water heater was
created. These devices store a large amounts of water and heat it up
over time. Since you don't have to heat the water all at once you can
use a more modest electric heater or gas burner.
When water is needed you use some from
the heated tank. The tank is constantly supplied new cold water to
replace the hot water used which is then slowly heated for use.
Tanks have two major issues
First. The tank based water heater
cannot heat its supply of water as fast as it will be used in the
building. This is why it has the tank, to supply a buffer of hot
water so it has time to heat up more. If the usage in the building
exceeds the buffer (the water in the tank) then your hot water supply
temperature will decrease as the new cold water entering the tank, to
replace the hot water used, has not had time to be heated. Most tank
based water heaters are rated by there capacity in gallons (the
buffer size) and their recovery time (how long it takes to get the
buffer back up to temperature).
Second. When you are not using any hot
water the tank sits idle. This doesn't seem like an issue but it is a
big energy inefficiency with tank based water heaters. Any time you
have something hot sitting in a cool room the heat from the hot
object will diffuse into the surrounding room until both are the same
temperature. This means the hot water in the tank is constantly
loosing its heat to its surroundings (assuming they are cooler) over
time. Once the temperature of the water in the tank falls to a
certain point its heater will fire to heat it back up. The energy
needed to keep the water in the tank warm when no hot water is being
used is called stand-by loss.
Manufactures of tank based water
heaters try to minimize stand-by losses by slowing the rate at which
heat escapes the tank. This is normally done by insulating the tank.
This is also why older tanks can benefit from having an insulating
'blanket' placed around them.
Why tankless units are more efficient and awesome
Tankless Water Heater |
Since tankless heaters have no tank, they have no stand-by losses.
In addition tankless units can be built
with high efficiency heat exchangers which extract more
energy from the burning fuel and place it into the water instead of
exhausting it to the atmosphere as hot gas. Some high efficiency
units have exhaust gas temperature of less than 120F (this leads to
condensate issues discussed later).
Since the water is heated in real time
the tankless unit can provide hot water so long as you have water to
heat and fuel to burn. Tankless systems are rated by the temperature
rise they can sustain at a given flow rate. An example might be +40F
at 9.3 gallons/minute.
Many tankless systems use electronics
to monitor the flow of hot water out of the system. These same
electronic may also be used to detect slow leaks in the hot water
system. Once detected the system displays an error and shuts a
computer controlled valve stopping all hot water flow.
The components of a tankless water
heater are serviceable and replaceable. Generally only the burner of
a tank based system is ever replaced. Replacement parts for tankless
systems include the heat exchangers, electronics and various valve
assemblies.
There are some downsides
Since the water is heated in real time
the unit will need a lot of fuel. This fuel will be used very
efficiently and only when needed but it is still quite a lot. A three
or four bathroom house might use a 50 gallon tank based water heater
with a heater rated at 40kBTU or a tankless rated at 200kBTU. Because
of this need for great quantities of fuel a tankless unit may require larger fuel lines not available where an old tank unit was located.
Many tankless models use electronics to
provide very tight control on the temperature of the out going water.
This means you will need a standard electrical outlet in close
proximity to the new unit whereas most tank models have no such
requirement.
Going tankless will involve a good bit
of labor. Tanks rest on the floor and have their water inlet, water
outlet, and temperature and pressure relief valves on the top while
tankless units attach to the wall and have their water inlet, water outlet, and T&P relief valve on the bottom. So you can expect a fair bit of water line
rerouting to get a tankless to take the place of a tank unit.
High efficiency models will produce
condensate. In low efficiency heaters combustion waste products ride
the hot exhaust gas leaving the unit and exit to the atmosphere. More
efficient units produce exhaust gas at a temperature so low some of
the combustion products will condense (like dew) and drain from the
unit. This condensate is corrosive and local codes will dictate what
may be done with it but at the very minimum you likely need more more
piping to deal with it.
The bottom line
In my case the tankless unit cost $1150
and comes with a 12 year warranty on its heat exchanger. A comparable
tank system would run about $600. At the current price of natural gas
in my region the unit will save around $1000 in fuel cost over its
warranted lifetime. This more than compensates for the up front cost
of the unit but we have not yet considered installation costs.
My unit was installed for $1400. Other
vendors in the area quoted as much as $2900. This does not include
the cost of the unit just the cost to install it. In my case all of
the prerequisites were met such as proximity to an exterior wall,
gas supply, and an electrical connection. Even so the tankless unit
could not make use of the existing flue duct nor the condensate lines
from the AC units which already ran though the exterior wall (both of
these restrictions are mentioned in the owners manual for the unit). So even in near
ideal conditions there is likely to be a lot of work if you are
replacing an old tank unit. Installation took a single technician
about 7 hours to complete.
Despite the various advantages of a
tankless water heater the economics of installing one may prove to be
complicated when all costs are factored. Even if it proves to be a
money saving decision it will likely be a long term savings.
Sunday, April 14, 2013
Suspended Ceilings are Awesome
A drywall ceiling |
The above is a conventional drywall
ceiling. It consists of sheets of drywall screwed directly into the
joists of the floor above. This is the most common type of ceiling
seen in residential homes and apartments.
Traditional suspended ceiling |
This is a suspended ceiling or drop
ceiling. It is made of metal railings which form a grid suspended
from the joists above by wire (between 18 and 12 gauge) with panels
filling the square or rectangular spaces. This image also shows a
fluorescent troffer, the most common lighting used in such ceilings.
These shallow light fixtures normally hold 2 or 4 florescent tubes
whose length is either 24 or 48 inches depending on whether the
opening the in grid is 1 or 2 panels wide respectively. The panels
used are flat, white, and have a bit of small scale texture to them.
These ceilings are commonly found in commercial structures as they
are not very attractive but provide good access to the mechanical
systems which run through the ceiling.
Awesomeness++ suspended ceiling |
This is another, much more awesome,
suspended ceiling. Here the panels are beveled so they sit proud of
the grid plane. They also have a much larger scale texture which in
this case gives the appearance of naturally cloven and weathered
stone.
This room makes use of indirect
lighting above the bookshelves so there are no light fixtures in the
ceiling. The white ports shown are vents attached to the HVAC system
ducting. Other options for lighting are also available for these
ceilings.
Suspended ceiling with can lights |
Above we have another ceiling making
use of can lights. These are the kind of lights you commonly see
recessed into drywall ceilings. These lights can also be used in
suspended ceilings. In fact the standard can lights sold at you local
home center may be install into either a drywall or suspended
ceiling.
Why don't more people have suspended ceilings?
People think they are ugly.
Most people associate suspended
ceilings with the dull ultra utilitarian ceilings they see in their
offices. This prejudice is so intense those who see an
excellent suspended ceiling will not even recognize that it is a
suspended ceiling. This prevents them from acquiring counter examples
to their experience.
Houses do not commonly come with them.
Installing a suspended ceiling in existing construction requires removing the existing drywall
ceiling. This is a very messy process. It generates a tremendous
amount of fine dust and even a small room will have so much drywall
you will want to either hire someone to remove it or rent a dumpster.
It is expensive per square foot.
While
you will spend less on labor to install a suspended ceiling compared
to a drywall ceiling you will spend a lot more on materials. Drywall
is cheap but ceiling tiles are not. Expect to spend at least triple
(or more) on suspended ceiling materials compared to a drywall
ceiling.
You will loose some ceiling height.
Four to six inches is the minimum distance you want between the
joists and the grid of the suspended ceiling. Any less and it will be
hard to place the tiles. Since drywall ceilings are attached directly
to the joists this is ceiling height you will loose from the room.
Recessed lights, or can lights, are taller than six inches but are normally installed between joists so their use will not force the
ceiling lower. Other type of lights may so advanced planning is
important.
Some of the benefits of a suspended
ceiling over a drywall
ceiling.
Provides access to the space above the ceiling.
This is very important if you ever have
plumbing leaks, electrical problems, need to run new cables (security
camera, home theater, networking), or want to remodel. Most
contractors which provide these services do not work with drywall.
Thus if their work requires making holes in your ceiling (which is
very often does) they will either get a subcontractor to do the work
or leave it to the homeowner to fix. Drywall work is slow and
requires repeated layering, drying, and sanding of
drywall compound. This makes it expensive.
The tiles are removable, replaceable, and paintable.
If a tile is damaged, perhaps by
gouging it with something you were not careful enough in moving, it
can be easily removed and replaced.
The tiles are also easily painted with
aerosol (spray) paints. Many restaurants and hotels use suspended
ceilings with the tiles and grid painted in combination with crown
molding to match their decor. The grid is a bit more troublesome to
paint since the existing hard coating needs to be roughed up and is
not normally removable once installed.
A huge variety of tiles are available.
Everything from the standard white tile
to tiles made to look like stone is available. Some specialty
manufactures even make metallic tiles to look like hammered tin or
brass, fine cast plaster tiles, or luminescent tiles.
In the end if you are unable to get an
awesome ceiling using a suspended ceiling system then you are doing
it wrong.
Tuesday, March 19, 2013
Degassing Epoxy
People who saw the vacuum chamber video were disappointing I did not actually use the chamber in the video. This should correct that issue. Here I am using my vacuum chamber to degas a small amount of West System epoxy.
Sunday, March 3, 2013
DIY Vacuum Chamber Setup
The will be my first video post. In this short clip I explain how my put together my vacuum chamber.
Thursday, February 7, 2013
The 3 light question and its abuses
The abused 3 light question |
There is a popular interview question
which claims to make a candidate think 'outside the box'. It goes
something like this.
Suppose there are 3 light switches. There is elsewhere a room with three light bulbs each controlled by one of the aforementioned switches. You cannot see the room from where the switches are located. How do you determine which switch operates which light bulb if you are allowed to visit the room once?
It is answered with the following.
Turn on switches 1 and 2. Wait several minutes. Turn off switch 2. Go into the room. The light which is on is controlled by switch 1. The light which is warm is switch 2 while the room temperature light is switch 3.
While the question may have value in an
interview I am not fond of the way it is commonly administered. A
typical session with this question might go something like what
follows. You can skip this next (somewhat humorous) section if you
are familiar with how this question normally runs.
Candidate: Since each light is controlled by one switch I follow the wiring from the switch to the lights.
Interviewer: The wires are covered by walls and ceilings so you can't see them. Can you think of another solution?
Candidate: I punch holes in the walls and ceilings so I can see the wires.
Interviewer: The walls and ceilings are made of a an indestructible material. Can you think of another solution?
Candidate: I set my cell phone to record video and toss it into the room. I operate each switch in order and then go into the room and review the video on the phone to determine switch order.
Interviewer: But you can only go into the room once.
Candidate: Well you said that I could only visit the room once but never mentioned my phone.
Interviewer: Ok. The room has a door which can only be opened once and shuts immediately once you leave the room never to open again.
Candidate: Hmmm. I disconnect the common wires from the switches and attach signal toners to 2 of them. I then go into the room with a probe and use it to identify which switch goes to which light.
Interviewer: A signal toner?
Candidate: Yeah its a device which transmits a modulating electrical signal over the line which can be detected by a contactless probe. I set the 2 toners to transmit different patterns from each other. The light which does not have a tone is controlled by the switch which doesn’t have a toner on it.
Interviewer: I see. Well lets say the lights and switches do not use wires which transmit electrical signals.
Candidate: Um. Isn't that is a little bizarre.
Interviewer: Can you think of another solution?
Candidate: I would switch one light and then go outside and look through a window to see which light was on. Since I haven’t visited the room I can do this for each of the switches.
Interviewer: Why do you think this room would have a window?
Candidate: Well most rooms large enough to justify three different lights on three different switches would be too big to fit wholly within the interior volume of a building and most architecture would include windows in any room with an exterior wall. Doing this also helps with fire code.
Interviewer: Well lets say for this example this room has no windows.
Candidate: Alright. I would visit the room first and carefully arrange its furniture to cast specific patterns of shadows based on which light was on.
Interviewer: But the door will close after you leave.
Candidate: That's fine. The pattern of shadows is oriented so as to be distinguishable from outside the door at ground level. I revisit the outside of the room after operating each of the switches in turn.
Interviewer: But the door is closed.
Candidate: Doors include a gap at the bottom to allow for return ventilation within a building. If the door perfectly sealed it would increase the static pressure experienced in the ducts and place undue stresses on the HVAC's fan motors. You could have return vents within the room to alleviate this but its more expensive as you need a separate set of ducting to support it.
Interviewer: Why do you think this room wouldn’t have return ducts?
Candidate: Thus far this room is sounding like a terrible place so I am betting it is in a cheaply constructed building.
Interviewer: Well lets say the room has no ducting at all and the door does indeed perfectly seal when closed.
Candidate: Really?
Interviewer: Yes really.
Candidate: <long pause>
Interviewer: Any other ideas?
Candidate: YES! I have it! I am presently engaged in a dungeon crawl in a fantastic world of magic and adventure!
Interviewer: What?
Candidate: Of course, I should have seen it sooner. Where else would you find invincible walls, automatic sealing doors, and lights which don't use electricity. This must be a challenge I have to solve before advancing. Excellent. I engage my divination powers to search for clues.
Interviewer: No! No! Magic is not the answer either. Its nothing like that.
Candidate: Combat then! You must be the boss fight. Very well I am prepared for battle.
Interviewer: No! You are supposed to use the fact the lights get hot when you run them for a few...
Candidate: SILENCE! Everyone knows magic lights produce no heat. Now, face me you fiend.
Our candidate's epic fight and
acquisition of a quest item which led him to a better job is not the
point.
The point is this: If you want a
candidate to think outside the box do not build one around him.
Whenever the candidate gives an answer
the interviewer responds by restricting the problem space to make the
offered solution invalid. The box most interviewers want their
candidate to think outside of is being created by the interviewer
with each limit placed to reject a solution which is not the
'correct' warm light bulb solution. If you truly want to measure the
breath of imaginative thinking a candidate has then you should
encourage multiple solutions without restricting the problem.
For example do not say:
“You cannot use a signal toner
because of <some restriction> can you think of another
solution?”
Simply say:
“Can you think of a different
solution?”
This allows the full set of possible
solutions to be explored and prevents the interviewer's biased
solution from influencing the candidate.
This is not to say restricting a
problem is a bad interview practice. Even in the most broad
imaginative thinking exercises some restrictions must exist to
provide a context for the answer. These restrictions however should
be provided as part of the question in advance and not as a shove in
a predetermined direction after an answer is given.
Does this mean there is no place for
invalidating a candidates answer via refinement of the question after
it is asked? Is there likewise no place for questions with expected
answers? No on both counts.
There is a very appropriate place for
these questions. If you want to measure a candidates experience in a
certain field it is perfectly fine to give a problem for which there
is a common industry practice answer. If the candidate responds with
a novel solution you may restrict the question to encourage the
industry answer. This is done to verify the candidate is familiar
with standard practices and not to evaluate creativity. Understanding
the differences in the goals of these questions is key to their effective use.
As always feedback is awesome and
encouraged.
Monday, January 7, 2013
Gluing things to Pelican cases
Pelican 1750 with mounted plate |
This was a project for my dad. It is a
Pelican 1750 case which has attached to it an aluminum plate water
jet cut with his initials. Attaching the plate to the case was a bit
more challenging than expected, and by 'a bit' I mean I spent almost
2 months worrying over it before I was willing to attempt it.
These Pelican cases are made of
polypropylene a plastic which has, among its many properties, a low
surface energy. Simply put it is hard to get things to stick to it.
In the past I tried a 2 part epoxy,
which sticks to most things, on one of these cases and it did not
adhere. Not only did it not adhere the cured resin detached from the
case with almost no effort. It detached so easy I could have used the
epoxy to make a mold of the case.
Eventually I checked the FAQ on the
Pelican website (probably should have done this first) which
recommended using 3M Scotch-Weld DP 8005. This product is somewhat
pricy. I spent, before shipping, a bit more than $1/mL for this
stuff. This turned out to be the least of my issues as the cartridge
for the Scotch-Weld requires a special gun to apply which is sold
separately.
Dispenser for Scotch-Weld Adhesives |
But the gun is just the beginning of
your woes. While the gun comes with two plungers (the upper black
rods in the photo) neither of them works with the 8005 cartridge. A
10:1 plunger is required (the bottom rod) which also had to be
ordered separately. In addition to the gun and the plunger you also
need mixing tubes (the clear and red cylinders in the photo). This is
the most vexing part. I assumed since the mixing tubes and cartridges
are used in a 1:1 ratio and cannot be reused the mixing tube would
come with the cartridge. Nope. They are sold separately as well.
Maximum vexation achieved.
Mercifully after the scavenger hunt to
get the parts it turned out to be easy to use with the only catch
being the 8005 has a working time of only 3 minutes. The work area
was protected with standard masking tape, the part to be attached was
checked and aligned, the adhesive was laid down and then the part was
placed and weight applied. It is necessary to support the lid from
underneath. When pressure is applied to the plate the force
distribution causes the case lid to bow underneath it. This would
increase the gap underneath the middle of the plate if the underside
of the case lid was not supported.
In the end it worked out well and the
adhesive turns out to be rather strong. Hopefully I will have another
project for which this 8005 will be necessary. I certainly spent
enough on its accouterments so it would be nice to get more than one
use from them.
Subscribe to:
Posts (Atom)