evought
Members-
Content Count
244 -
Joined
-
Last visited
Everything posted by evought
-
Well, the Physician's Desk Reference to Herbal Medicines, 2nd Edition (2000) pp 539 says that research has confirmed neem seed oil to have anti-inflamatory and antipyretic (fever reducing) properties. It also states other properties, such as treatment of febrile diseases (e.g. malaria and leprosy) as "unconfirmed", but that means they have not proven them wrong yet either. Such properties are not uncommon. About half of our current medications still come from plant extracts and half of the remainder come from synthesized plant extracts. Dogwood bark contains an antibiotic equivalent to sulferizole (sulfa drugs) and has also been used in the past to treat malaria. There was a shortage of chinchona bark (the preferred treatment for malaria at the time) that caused people to use dogwood instead. The antibiotic effect is why the Osage indians using dogwood twigs to brush their teeth had such a lack of dental problems. Herbal medicines are real; they are not magic and they do have problems/side effects, but they are real. Ever hear of aspirin? Synthesized willow bark extract. Sudafed (psuedo-ephedrin) is just synthesized extract of ephedra. You probably use plant-based medicines all the time. If you know how to prepare the plant, you do not need the drug. Synthesized versions are more consistent in dosage but generally have more side effects. I cannot take Sudafed, but I can use ephedra.
-
I have a degree in ecology and have done drug discovery research. I used to do wilderness survival training (wild edibles and emergency wilderness medicine). I have spent the last few years studying botany as a hobby. I am disabled, so I have a bit of time on my hands. I have also had to self treat for a few years when I had no insurance. Biochemistry knowledge comes in real handy at that point. My understanding is that hyperforin "deactivates" HIV; basically, it blocks its receptors in a way where it can no longer function. Since viruses are not really "alive", they cannot be "killed" per se. In a test tube, hyperforin deactivates all of the virus. In a human body, the virus has many more places to hide and can escape. Herpes simplex (cold sores) work the same way. They hide inside of cells most of the time where the immune system cannot get at them. Every so often they break out and attack. That is why people can have AIDS for years before it starts to kill them. So, basically, when they found out it kills HIV (2000 or so), they got permission to try it in humans (2003?) and it just did not work.
-
Welcome to Hollywood: Don't Call Us, We'll Call You It is a little appreciated fact that a class presents two APIs: one to its callers and one to its subclasses. Presenting a coherent, easy-to-use, and hard-to-misuse API to subclasses is tricky but important. The "Override and Call-Inherited" idiom is commonly found in Object Oriented APIs, nearly anywhere virtual classes are present. While this idiom is useful and works, it is error prone and better methods exist. In this article the "Hollywood Principle" is used to write safer code. C++ and Java implementations are discussed. Override and Call-Inherited In many APIs, the documentation for a method contains a note like the following: "Override this in your subclass and call the inherited method." To take a simple example: class DrawableItem{ // ... other members virtual void draw(Context context) { drawBorder(context); update(); } }; The idea is to subclass and create your own DrawableItem. When you do so, you override draw(..) and call the existing version: class MyDrawableItem : public DrawableItem{ void draw(Context context) { drawUpsideDownPandaOrWhatever(context); DrawableItem::draw(context); }}; This is a simple way for the base class to provide some common functionality while still allowing subclasses considerable freedom. Leaving draw(..) as a pure virtual in the base class would require every subclass to remember to draw its own borders and call update when finished. I see "Override-and-Call-Inherited" code on a daily basis. The Problem While simple, this idiom replaces one problem with several others. Consider the following: class MyDrawableItem1 : public DrawableItem{ void draw(Context context) { drawASquare(context); // oops }};class MyDrawableItem2 : public DrawableItem{ void draw(Context context) { DrawableItem::draw(context); // oops drawACircle(context); }};class MyDrawableItem3 : public MyDrawableItem2{ void draw(Context context) { drawACircleInTheSquare(context); DrawableItem::draw(context); // oops }};class MyDrawableItem4 : public MyDrawableItem{ // oops}; All of these mistakes are simple to make, especially when cutting and pasting code to create a number of related subclasses. The problems with MyDrawableItem2 and MyDrawableItem3 are subtle and may be hard to diagnose. In Drawableitem2, the superclass method is called before the specialized subclass code. This will result in a call to update(..), presumably to refresh the screen, before the subclass has finished drawing. The appropriate order is not often given in API documentation, making the problem even harder to find. A bug of this kind in a real drawing package can be very difficult to diagnose due to inconsistent behavior. The underlying graphics package will try to optimize calls to avoid excessive redrawing and the class may work as intended most of the time. In MyDrawableItem3, there is an additional layer of subclassing, but the wrong superclass method is called. This type of error often results from a refactoring of the base class. The original call was correct, but the name of the direct superclass has changed over time. This particular problem can be avoided in Java applications by using the super keyword which refers to the direct superclass, regardless of what it is. The last mistake, in MyDrawableItem4, is a consequence of draw not being pure virtual. The compiler will not force the subclass to provide its own draw(..) method. This also means that the compiler may not warn you if you get the signature of draw(..) wrong in your subclass! It is important to note that the ability of the subclass to not call the inherited method is a vehicle to violate the Liskov Substitution Principle [FV1994], which states that any child class reference must be a valid and indistinguishable substitute for a parent class reference. This principle is one of the foundations of Object-Oriented Programming and is critical to the ability to program generic algorithms which operate over collections of polymorphic objects. Loopholes like that provide by DrawableItem are commonly exploited to make subclasses which behave in a way not envisioned by the superclass designer. Sometimes, this can allow a programmer to work around a serious defect or limitation in an API; often a lazy programmer can use it to write code which is obtuse and confusing. A prudent API designer will close the loophole while at the same time providing more constructive ways to extend the class. A Better Solution The solution, in essence, is to divide draw(..) into two separate methods, one of which cannot be overridden and one of which must be. This is a specific application of the Template Method pattern [GOF] [OOPD:TM]. class SafeDrawableItem{ // ... other members public: void draw(Context context) { drawBorder(context); itemDraw(context); update(); } protected: virtual void itemDraw(Context context) = 0;}; SafeDrawableItem::draw(..) first draws its own borders, then delegates to its subclasses via the pure virtual itemDraw(..). Last, a call is made to update the screen. Notice that draw(..) is not virtual and is not to be overridden; instead, draw(..) provides a template and itemDraw(..) will fill in the details: class MySafeDrawableItem : public SafeDrawableItem{ // ... other members protected: void itemDraw(Context context) { drawMyOwnThing(context); }}; itemDraw is a bit simpler than the old draw(..) implementation. There is no need to call the superclass method in each subclass, which should reduce the temptation to cut-and-paste. itemDraw(..) is always called and always at the appropriate time, so call sequence is no longer an issue and the name of base class can be changed without breaking subclass code. Forgetting to implement itemDraw(..) or mistyping the method signature is now flagged as a compiler error. A subclass can still attempt to override draw(..), but this will have little effect if the use of DrawableItem is primarily through pointers or references to the base class. Since draw(..) is not virtual, the base class method will be called and the subclass method will be ignored. Some C++ compilers will warn about this case. Java's final keyword makes this explicit and tells the compiler that draw(..) may not be overridden. public abstract class JavaDrawableItem{ // ... other members public final void draw(Context context) { drawBorder(context); itemDraw(context); update(); } protected abstract void itemDraw(Context context);} A last advantage to this approach is that there is a clear and appropriate point to handle exceptions which is otherwise difficult in the original code: class MySafeDrawableItem{ // Other stuff ... void draw(Context context) { drawBorder(context); try { itemDraw(context); } catch (SubclassDrawingException& e) { // Do something appropriate } update(); }}; This top-down control structure is sometimes referred to as the Hollywood Principle [GOF] ("Don't call us, we'll call you"). The TemplateMethod pattern gives the base class rigid control over the sequence of events while the subclass provides specialized behavior at key points. Here a pair of methods is shown, but there is no reason that draw(..) cannot call multiple virtual methods, some of which may have default implementations. The point is, when you want to ensure that something happens in a subclass, do it yourself, do not put a request in the documentation. References [GOF] Design Patterns: Elements of Reusable Object-Oriented Software. Erich Gama, Richard Helm, John Vlissides, Ralph Johnson. Addison Wesley Longman, Inc. October 1994. ISBN: 0-201633612 [OOPD:TM] The Object-Oriented Pattern Digest. Template Method http://forums.xisto.com/no_longer_exists/. David Van Camp. 2002 [FV1994] Family Values: A Behavioral Notion of Subtyping . Barbara Liskov, Jeanette M. Wing. October 1994
-
Like most ideas of this nature, it becomes more practical as 1) the related businesses are under the same control (market diversification) and 2) the cost of energy and raw materials goes up. But your point is well taken. #1 involves a high risk business wanting alternative outputs as a hedge against a drop in the price of their primary market. If the price of electricity goes down, there is a chance that the price of gypsum, dry ice, emissions credits, or paper (in the plant next door) will go up. I have seen this trend with AES (Allied Electrical Systems owns various plants in the NE US and Europe) where the market price of electricity is regulated but the production cost has been rising steadily. This is also the case on our small farm where the margin in various products or types of produce as well as cost of raw materials is very tight. Since all of the operations are conducted by the same small group, process re-engineering and thus cogeneration is possible and effective. I think #2 is obvious and is the same reason renewable resources are becoming more practical. A coal plant may be able to produce electricity for 7-9 cents per KWH, while a solar farm may cost 13-15 cents (amortizing the cost of the cells). If coal costs go up (either because of reduced availability or because of emisions regulation) just a few cents, and emissions credits make solar a few cents more profitable, they are suddenly competitive. The same goes for producing paper or plastic with the heat from a coal plant. Additionally, where it is expensive (because of circumstance or regulation) to provide coolant for a plant (coal, nuclear, NG, whatever), the cost of actually using the heat may be negligible. In the end, as in all things, it depends.
-
This is a quick tutorial on how to import and process pen and ink sketches using photoshop elements using either a flatbed scanner or a camera with a document mode. I have a graphire digital tablet, but I have a lot of work that has already been done on paper and I also do a lot of paper sketches on the road. It is not hard to digitize these sketches, but it takes some care. I will talk about using both a flatbed scanner (HP OfficeJet All-In-One) and a camera (Kodak EasyShare Z700) with a document or text mode. Cameras with no optical zoom and no document mode are possible as well, but much, much harder. The first thing to consider is your sketches themselves. You will get best results using a flat or semi-flat paper and a semi-gloss ink or vice-versa. The difference in texture makes it easier for the camera to pick up your lines clearly. If you use a pencil for the initial skethc, this is not a problem as long as you draw lightly. It helps if you usea good 2H or harder sketch pencil. I get some ghosting from the undersketch in my scans but it is minimal and I do not consider it a problem. Do not use an eraser while sketching. This damages the texture of the paper and is worse for the scanner than stray pencil lines. Just sketch over your mistake. If you must use an eraser, make sure it is a kneaded art eraser, not the one on the back of your pencil. This is the problem which gets me into trouble the most often. Once you have your sketch, prepare it to be photographed. This is a bit touchier than a scanner, which we discuss below. Use an opaque, smooth surface directly underneath your drawing. More paper is ideal and taking photos of a sketch book works well. The additional thickness of paper absorbs the flash and you will not get a reflection and double image. Underneath the whole works, a softly colored and textured surface seems to be helpful to the camera in figuring out the white balance and focus. I use a short-knap tan carpet with overhead lighting. You will want to experiment with your camera for the best results. Put the camera in document mode; this is designed for focusing on flat, close images and has settings for determining the color balance. If you are not sure how to do this, consult your camera documentation and ask your salesperson before buying (ask for samples if they have them). On the Kodak EasyShare, choose "SCN" on the dial and "Text" as the mode. Now hold the camera as close to perpendicular over your document as you can; any angle will foreshorten and distort your image. Push the button partway down until the crosshair turns green (Kodak) or a tone sounds (many Sony cameras), then, when the image clears, press fully. Be careful to not jiggle the camera during this process. Use something to steady it if you can. If you have multiple drawings on the same page, photograph them separately. Space on the camera is cheap and you will have a better chance of having them come out right. If one sketch comes out badly, it may appear better in another picture. After loading each one, drag them into Photoshop Elements. Photoshop Elements is a demo version of Photoshop which comes with many graphics devices such as cameras, scanners, and graphics tablets. A flatbed scanner, is of course, simpler. You do not have to worry about the background, the focus, or jiggling the camera. Most scanners have a "Ink Sketch" or "Pen and Ink" setting. Failing that, "Newsprint" works decently. On the HP OfficeJet, Newsprint often worked better than the actual Pen and Ink settings, so some experimentation is in order. Scan several ways and see what you like best. The first processing step is to crop the image. Sometimes you can do this right in your scanner software, but there is little advantage. This takes your background out of the picture and out of site of the color correction software in photoshop. After you have cut as close as you can, go to the Enhance menu and select "Quick Fix...". This will open a dialog with several options for automatic enhancements. This is the easiest way to rpocess your photo. If the enhancements here do not work, it is easier to go back and reshoot (believe me, I have tried it). The first enhancement should be Brightness under column one and AutoContrast on column two. This will adjust the white balance and give you better results on correcting the color. Next select Color Correction from column one and Auto Color from column two. This will give you true black, white, and intermediate colors. Last, select Focus and Auto Focus to correct for any jiggling of the camera. You should have a nearly perfect scan at this point. If not, rescan or rephotograph. You can do some retouching from here, especially if you have a graphics tablet, to touch up ghosting. Any but the most careful touch-ups, however, will mar your image background. Using the dropper tool and flood fill, you may be able to replace the background, but this is trickier than it looks as your lines may fade into the background where your strokes are not as dark. If you really can not get the image to photograph well, create a new layer and trace it. When finished, dispose of the scan and keep the trace. This is the best way to make your background transparent. Hopefully this quick tutorial will help you avoid the hours of frustration needed to figure out the basics. From here, your drawings, your camera, and your tastes will differ. Do not hesitate to try multiple techniques. Just like in drawing, different techniques will give a different character to your finished product. Sometimes the rough, obviously drawn on paper look may be exactly waht you want to look different in an age of digital art.
-
Scientists Believe They've Found Cure For Aids
evought replied to miCRoSCoPiC^eaRthLinG's topic in Websites and Web Designing
Mostly true, unless you get it through a blood transfusion or from someone you help at a roadside. -
This is not exactly a new idea, but it is a critical one. As we reach peak oil and approach global warming, there is no one technology which can replace everything we currently do with less energy and less polution. In the end, less energy must be used and less polution produced.The idea of co-generation is simple: get everything you can out of every watt of power and every ounce of a resource by letting side-effects work for you, not against you. As an example, a electric plant can use waste heat to run a chemical process in the factory next door. The factory gets cheap energy; the electric plant gets rid of waste heat before the water cycles backthrough its turbines. Everybody wins.Examples of co-generation can be large and complex. A coal electric plant need not stop at using waste heat. CO2 scrubbers can be used to produce dry ice for sale. SOX/NOX scrubbers can make gypsum (drywall) as a by-product. Waste ash can be used for soil treatment (if metal levels are low enough). For that matter, coal plants can and sometimes do burn waste tires. They burn as clean as and hotter than coal (steel belts are a problem- they melt and stick to the grate).Examples can be much smaller. When you heat with a woodstove and put a pot of water on top, you are using co-generation. On our farm, our woodstove disposes of dangerous deadfall and combustibles in the wood lot, cooks our dinner, heats our home, and produces ash which is leeched for potash lye and turned into soap. Spent ash goes into the compost to alkalize manure.With enough effort spent on co-generation, we can seriously dent our energy use, our resource depletion, and cut pollution levels. Without it, well, with every farm in the country producing corn, we could not make enough ethanol to fuel our cars at the present rate.
-
I currently use Safari for most browsing on OS X just because of stability. Firefox was able to decipher more sites correctly, but would frequently lock up (under 10.4.3), spike my processor, flood my bandwidth, and need a Force Quit. From posts in various forums at the time, this was not unusual and due to a networking bug.Question is, with new versions of OS X (10.4.5) and Firefox, is it stable? Are other people still experiencing this problem?
-
Problems With VS-FTPD Under FC4
evought replied to miCRoSCoPiC^eaRthLinG's topic in Websites and Web Designing
Ha Ha Ha. Funny thing is, I have seen this before. It took me weeks to figure this out. Do you have any kind of firewall in between you and your server (it can even be a built in windows or linux firewall)? If so, it is a problem with either your FTP passive ports setting or your firewall, or both. When a client connects passively, it uses a transient port requested by the server. This line tells you what the port is: Response: 227 Entering Passive Mode (10,19,168,5,207,58) A firewall is blocking this connection. You need to reconfigure your server to request different ports or your firewall(s) to accept different ports, preferably both. See an earlier post of mine with more complete discussion (http://forums.xisto.com/no_longer_exists/). This was for ProFTPd, but the principle is exactly the same. -
Scientists Believe They've Found Cure For Aids
evought replied to miCRoSCoPiC^eaRthLinG's topic in Websites and Web Designing
This could be good, but it is not the first attempt. In 2000-2004 they thought they had found a chemical to do exactly this (hyperforin) and it did, in vitro (in the lab) but not in vivo (in a human). After getting approval for the human trials, they found out that it did not work as expected. Now they have been using hyperforin (a plant-based compound by the way) to clean tainted blood supplies, where it apparently works quite well, but inside the body, the virus has too many places to hide. It goes into stealth mode (like chicken pox/shingles) and pops out again later. Hopefully, this new compound can get to where it can hurt the virus without overly nasty side-effects. Of course, the side-effects would have to be really nasty for it to not be worth it if you would otherwise die of AIDS. As you say, pray for success. -
I have had a number of opportunities to use these skills in a city. I think after Katrina many more people are aware of the potential. It is amazing how quickly people get injured or die when they lose modern services. Some fourteen people died in the Raleigh-Durham area when an ice storm knocked out power. Most of them died burning barbeque grills inside for heat and cooking. Carbon Monoxide got them. People died earlier that year in the outer banks from dysentary and other water contamination when a hurricane hit. People died in the northeast a couple years back when they had that blackout- mostly elderly. In situations like this, I am usually prepared well enough (with only a little effort) that I am at most inconvenienced. A tornado struck our house just last week. Because it is good solid stone and we had a storm shelter we are fine--- just lost a few windows and got parts of someone else's house dropped in our yard. Rolling two 01's out of a hundred may seem like long odds, but not when you roll for it every day of your life. Chances are that everyone will get hit at least once in their lifetime. Giving talks seems to work better than books. Many more people will lsiten than buy a book, especially if you can talk to them from experience. A lot of the FEMA literature is utter crap- too much work, too expensive, too little gain. Just like insurance, preparation has to balance actual risk. Preparing for a blizzard in MO is pretty dumb, but looking out for tornados is rather important here. It is automatically copyrighted, but it is not obvious what the terms are. Giving people a reminder helps. I want to protect myself in case I do decide to put this stuff in a book. :-)
-
This is why I really like GMail's POP access. It allows me to filter the mail again when it gets to my mail program. In all, messages for me go through three SPAM filters, one when it arrives at my POBOX mail alias, one at gmail, and one at my mail program. I get essentially no SPAM and get reports on what was discarded so I can make sure I am getting what I need. Honestly, though, if they (AOL and Yahoo) are good at their word of blocking folks who abuse the service, I would love a way to hang offenders by their nose hairs. Right now, I report messages to the various filters which missed it, but I can't really attack the SPAM at its source.
-
If you are really interested in this sort of thing, you need to read the "Dragon Book". It is a computer science classic and is still the best source. Be aware that creating a language is not hard (relatively), but making a good and useful one is. The biggest problem is coming up with a grammar and syntax which is simple enough to be easy to learn and complex enough to do what it has to do. You also need to balance ease of use, elegance, consistency, and orthogonality. In general, getting it right takes about ten years of careful testing and feedback. This is one of the reasons that Java has had a lot of growing pains: it was not fully cooked when released. In the early days of a language you want a relatively small group of dedicated users who are willing to deal with you breaking their code on a regular basis to fix language problems. When a language is released to the public early, the temptation is to leave the mistakes in rather than break a lot of other people's code.
-
Thanks. I've been through a tornado or too, a couple hurricanes, blizzards, and a good bit of wilderness survival. It's amazing the people that think planning for things like this is paranoid. I know a lot of folks in Louisiana thought that until recently! I don't spend an enormous effort on disaster planning, but when it comes down to it, little things matter.
-
This is a copyrighted work. See bottom for copyright and license. Water is one of the most important survival resources. You can live for weeks without food, but only days without water. Water-bourne diseases like dysentary and giardia can kill within 24-48 hours and can incapacitate, making you unable to help yourself, in less than a day. This article will tell you where and how to get clean water in an emergency, first by telling you how to store it, then how to treat it, and last, how to survive if you were just plain caught flat-footed and are not prepared at all. How much water does one need? The average person needs one liter (roughly one quart) of clean water each day to drink. Some of this can be gotten from other sources besides drinking plain water, but one 16 ounce soda does not equal 16 ounces of water. So, a family of four needs one gallon of clean water a day just to drink. Add to this washing, brushing teeth, and so forth, and it quickly adds up. Storing water, therefore, is largely a matter of how long you expect to use it and how much you are willing to not use it except where critical. In general, forty gallons of water should get a family of four a good week's worth of emergency water for basic needs. We will talk below about why forty gallons is a good number to work with. If you are travelling or need to get out of a disaster zone, remember that your car needs water too, especially in the stop and go traffic of any emergency situation. After several hours of heavy traffic, your car may be drinking water faster than you do. Your car, however, does not require drinkable water. When desperate, drink the water first, then give it to the car when your body is done with it. In any case, having several gallons of water in your car is always a good idea. You never know when an emergency will strike. Recycling Water When in an emergency, always try to get as much use out of the water you have as you can. The simple trick described above with the radiator can save lives. Similarly, there is no reason you cannot use dirty water or wash water to flush the toilet. In this case, poor the water into the bowl and let the valve do its work rather than into the tank. You will see why below. You can use rinse water from one set of dishes as the wash water for the next. For that matter, you can use the rinse water for wash water and then use it to flush the toilet. In a drought, wash water or grey water can be used for irrigation. Just be aware of the detergents and other chemicals you put into the water. Storing Water Factory sealed bottled water, particularly distilled water can last for some time. Water you bottle yourself is good for at most months. Regularly change out any water you store in this way. As an alternative, you can use mason jars or demijons and can sterile water just like jellies or jams. We use such canned water as a sterile irrigant for wounds on the farm. A cistern is an excellent device for storing water. It is essentially a lined (usually concrete) hole with a hole in the top to get water in and out and usually a pipe to the bottom to flush it out periodically. For a house, cistern sizes of between 1600 and 4000 gallons are not uncommon. A cistern gives you a guaranteed water supply for a long period of time. If you are in an area which gets frequent droughts or depend on a well, seriously consider a cistern or a raised water tank. Treating Water What do you do if you have water but it is or might be contaminated? You can treat contaminated water in several ways. One way is to use treatment tablets. These usually contain iodine and work by killing bacteria and parasites. They are a fast and effective short term option. In the long term, iodine treated water is unhealthy. Another way is to boil it. This also kills bacteria and parasites. If you have chemical contaminants or sediment, you can filter water. Systems like Brita and PUR pitchers or faucet filters will remove sediment, some chemicals, and some bacteria (http://forums.xisto.com/no_longer_exists/). More expensive ceramic filters will make raw sewage drinkable (http://www.aquatechnology.net/ceramic_technologies.html). A $300 80 gallon-per-day ceramic filter can provide emergency water for an entire neighborhood. Smaller $80 siphon filters can provide for a family. In hurricanes or floods, the problem is not usually getting water (you have too much), it is finding clean water. A single filter can replace a truckload of relief water. Yet another option is distilation. This is remarkably easy to do in a home. Just dig a hole, put a bowl or pot in the middle of the hole, pour the dirty water around the bowl and cover with clear plastic. Secure the edges of the plastic, place a weight in the center (to force condensation to drip into your container, and let the sun do its work. Sunlight will heat the dirty water, causing it to evaporate. Water vapor condenses on the plastic and clean water drips into your container--- simple, cheap, and effective. Obtaining Water When you are simpy caught off guard and need water quickly, what do you do? You have several options which require very little effort, but most people will die of thirst before thinking of them. Most homes have a built in reserve water tank with upwards of thirty or forty gallons (remember this number from above?) which most people forget about. Where is it hiding? In your hot water heater. The water heater stores an amount of water hot so that it does not have to run all the time. When the power is out, the water is no longer hot, but it is clean. Another wuick source is your toilet tank. This is water that is stored before it is used by the toilet, so it is still clean. Remember when I said to not pour dirty water into your toilet tank? You have several clean sources outside the house as well. One of them is snow melt. Snow, if chosen carefully (do not eat the yellow snow...) is clean and can be melted. I have survived off of snow while camping, and my sister's family used snow melt for weeks after their well went dry and they were trying to get a new one drilled. The other obvious source is rain. In a flood or storm, water on the ground is quickly contaminated. Water falling from the sky is generally clean. Put out a container to catch it. Let the first bit of rain clean your roof and then catch the rain off of the eaves. One year in camp, my wife and I filled two fifty gallon containers in minutes by redirecting the water from our dining fly. If you have a cistern, fill it from the rain water. Off of a good-sized roof, you can get several week's supply of water from one rain. The Best Container The best container for water is your body. Many people die of thirst in the desert with full canteens because they are rationing. Dehydration makes it hard to think and hard to help yourself. Always drink a full ration of water and, if your water supply is low, put the effort into changing the situation: getting water or getting out. Conclusion Water is a precious commodity in an emergency and many people die without it. If you keep a level head and do a little prep work, however, water can be obtained even in dire circumstances. We (my wife and I) give disaster preparation talks in the Missouri Springfield area. This work is copyrighted 2006 by Eric Vought. Xisto and Xisto corporation are licensed to reproduce this work at no cost for the purpose of driving traffic to their web sites and obtaining advertising. All other rights reserved.
-
I have gotten rather fond of JEdit (http://www.jedit.org/). It has a lot of nice features, including very nice language plugns and good scriptability, but the main reason I started with it is that it works identically on every platform. I can switch between Widnows, UNIX/Linux, and Mac with the exact same environment and settings. At the same time, it has some ability to conform to the platform (menu placement, font, color scheme, etc) if you want it to. I have XCode on the Mac, which is rather nice, but I don't want to have to get used to something and then not have next time I am on a Windows or Linux box. As I mentioned in another post, I actually use JEdit for most of my business correspondence and general writing now, too.
-
What Office Suite Do You Use On You Mac?
evought replied to jedipi's topic in Websites and Web Designing
I use JEdit for almost everything (yes, it IS a text editor). Standard business correspondence does not have to be anything but plain text. For fancier stuff like articles or papers, I then run text through LaTeX or DocBook. If I really need something quick and dirty with some formatting, I open up Mac TextEdit and make an RTF. I have a copy of OpenOffice installed to read other people's documents that TextEdit does not, but I use it once a month if that. Sticking to text is not (just) because I am an old time UNIX hacker and started writing papers in college with TROFF. It makes it a lot easier to manipulate gobs of documents with scripts or tools, including searching and version control. I also get used to my text editor and can use the same UI for everything from code to business letters to manuscripts. No "Office Suite" scales that well. -
Running Linux On Windows (Knoppix)?
evought replied to Kushika's topic in Websites and Web Designing
I have used Knoppix for this exact purpose before. It is fairly easy to do. It also gives you a clean bootable disk with a lot of tools in case your computer is infected. You will have some trouble getting Knoppix to get the most out of your video card, but this is actually a good thing: you want to make sure your users with the least powerful machines can read your site. -
Yes and no. What you can do is set up your web or ftp server so that it runs its processes as a particular user after the user logs in. With some work you can do this in Apache. Many (most?) FTP servers have this ability. I do not know about other web servers. What happens is a user logs in to the site and gets a process which runs as their user account. You can then set their group membership and the file ownership to get whatever level of protection you desire. This is safer anyway, since it isolates the damage which can be done by a malicious program or user. In many default setups, all incoming web request run as a particular user (say "apache") that has permission to read the site and little else.
-
This is a copyrighted work (see bottom for copyright and licensing). (Edit by MoonWitch : This work is copyrighted to evought himself) Saint John's Wort (plants in the genus Hypericum) is one of the most powerful plants in an herbalist's arsenal. It can be used to relieve pain or depression, treat wounds, kill bacteria and viruses, or induce sleep. It can also be dangerous when used casually or combined with the wrong medications. The use of St. John's Wort goes back centuries. It is, for instance, praised in Culpeper's 17th century herbal. "Wort" is an old english word meaning "plant", so "St. John His Wort" as it was originally called, just means "plant belonging to St. John." Why St. John? In England at least, St. John's Wort blooms on the feast day of St. John the Baptist (June 24th). Because the juice of the plant's yellow flowers turns blood red, St. John's Wort was considered to be holy and powerful. It was used externally to treat and cleanse wounds and internally to treat all manner of ills. Rather unusually, most of these uses seem to be born out by modern research. St. John's Wort as an oil or ointment contains both tannins and a chemical called hyperforin. These compounds slow bleeding by constricting blood vessals and are antibiotic and antiviral. St. John's Wort also seems to have some benefit in helping damaged nerves regenerate. When combined with other herbs which aid in healing, such as plantain (Plantago major) for shallow wounds or yarrow (Achiles milifolium) for deep wounds, St. John's Wort provides an effective treatment during wilderness emergencies. It's antibiotic nature combats staph infections and helps to prevent septicemia from forming in the wound. The downside is that hyperforin has a short shelf life--- as little as a few weeks to maybe several months before it breaks down and becomes useless. Internally, St. John's Wort is one of nature's best antidepressants. It acts as both a Monamine-Oxidase Inhibitor (MAO) and a Selective Seratonin Reuptake Inhibitor (SSRI) just like many synthetic antibiotics. Unlike many synthetic antibiotics, it shows far fewer side effects in clinical trials. In many trials, it rivals amitryptaline and fluoxiline for effectiveness in treating depression at a small fraction of the cost. A rather interesting property of St. John's Wort is that it inactivates the Human Immunodeficiency virus in vitro, that is, outside the body, but does not appear to work inside the body. It can therefore be used to kill viruses in tainted blood supplies. It may also be possible to use it to prevent transmission of AIDS and other viruses when used with contraceptive devices. Like many antidepressants, St. John's Wort can be used to treat neuralgic pain and sleep loss. For those who are not clnically depressed, St. John's Wort will generally cause drowsiness and help with insomnia. At the same time, it relieves pain and helps promote restorative sleep by inducing theta waves. Many people find St. John's Wort, often combined with either valerian or with passion flower leaf (Passiflora incarnata) and scullcap (Scutelaria et species) to be effective in treatment of fibromyalgia. If it looks too good to be true, there are often hidden dangers. This case is no different. Like any powerful medication, overdosing on St. John's Wort can cause medical problems, such as acute photo-sensitivity and even death. St. John's Wort can not be safely combined with many medications, mainly other MAO Inhibitor or SSRI antidepressants, but also the standard list of medications which cannot be taken with MAO Inhibitors or SSRIs. St. John's Wort can affect a developing fetus or a breast-feeding infant. It can cause drowsiness and effect your ability to drive or operate machinery. Finally, sloppy (or cheap) suppliers of herbs can sometimes contaminate a preparation with other herbs, sometimes dangerous ones. It is always better therefore to consult your doctor before using St. John's Wort and to be sure to obtain it from a safe and reputable supplier--- or grow it yourself. This is one of the primary benefits of herbal remedies: you can control the process. References: [PFG-Medicinal] Peterson's Field Guide to Eastern/Central Medicinal Plants, Steven Foster & James A. Duke, Houghton Mifflin Company, New York 1990. pp 114-115 (H. perferatum only) [TWoH1] The Way of Herbs, First Edition. Michael Tierra, CA, ND. Pocket Books. New York. 1990 pp 236 [Culpeper] Culpeper's Complete Herbal. Wordsworth Reference. Denmark. 1995 (original circa 1600) pp 139-140 [PDR-HM2] PDR for Herbal medicines 2nd Edition. Medical Economics Company. New Jersey. 2000 pp 719-725: Quite a bit of information on the pharmacology and research, slightly dated at this time; This source suggests that hyperforin may be stable for "a few weeks up to six months"; other sources suggest a maximum of five weeks. http://forums.xisto.com/no_longer_exists/ http://forums.xisto.com/no_longer_exists/ This work is copyrighted 2006 by Eric Vought. Xisto and Xisto corporation are licensed to reproduce this work at no cost for the purpose of driving traffic to their web sites and obtaining advertising. All other rights reserved. I am not a doctor, and this article is not intended to diagnose or treat any specific disease or condition.
-
PoBox.com is an email redirection service: you can purchase one or more email aliases from them for many years at a time (I prepaid for 12 years) at a low price and they will forward email going to those aliases to wherever your email is supposed to go. School, job, or ISP changes no longer disrupt your online world. Everyone knows your address and it will not change. There are several sites that offer this kind of service now, but PoBox, when I started doing business with them over ten years ago, was the first. They offer a number of additional features which still puts their service above the rest: easily changing aliases or adding new ones, customizable SPAM filtering, pager/phone support, an outgoing mail proxy, etc. They even have step by-step instructions for other site administrators to set up SPF (Sender Policy Framework) records and have spearheaded an effort to reduce SPAM and Spoofing. Where PoBox really shines, however, is their support. I have had very few occasions to use their support over the years (which is, in and of itself, sufficient praise), but when I have had to, they are prompt, professional, and courteous. Never once has the problem been their fault, but they helped solve it anyway. Recently, I had difficulty accessing their website and erratic problems sending mail through their SMTP proxy service. The PoBox system kept rejecting passwords even though they came directly from the Apple Keychain and had not been changed recently. Their support reset my password for me immediately and followed up when I continued to have problems, including attempting to reproduce the problems on their own Macintosh systems. Eventually it was traced to a bad binary patch in the recent Mac OS 10.4.3 update which apparently corrupted the Keychain components and caused the wrong passwords to be stored and sent. Reinstalling those programs from the combined update fixed the problem. I did not once get the typical support response of "It is not our problem, go away." The support staff (Kate Marslin) was polite, professional and knowledgable throughout. They were clearly familiar with my OS and applications and I did not get a "Well, we don't support that, go away." Overall, the best support experience I have had in a long time. My account comes due for them sometime this next year, and I fully intend to renew for another twelve years. Keep up the good work folks.
-
Has Anyone Tried Tiger? The new OS release called Tiger
evought replied to lesmizzie's topic in Websites and Web Designing
Actually, that is not quite true. I have run into problems with the update; it just took me a bit to pin them down to the update. I am experiencing problems with Mail and Safari, particularly with Keychain access. Safari is not updating the Keychain properly when I change a password for a website (although it claims to update it) and Mail is succeeding in connecting to some servers even with a bogus password (it is not reading the password it claims to be, I assume). Keychain Access will refuse to let me update certain password entries. The various 'First Aid' routines (for Keychain and for the file system) do not show problems. I believe, from reading various forums and discussions on the Apple site, that it may be a corrupted copy of Keychain Access and/or the Keychain support frameworks, which were changed in this release. The standard update patches the binaries rather than replacing them. I have downloaded the combined 10.4.3 update and will install that shortly to see if the problems go away. The combined update contains the latest versions of the whole applications and frameworks rather than patches and other folks report success in making the odd problems go away. -
CVS Basics Some Basic Recipes for Using the Concurrent Versioning System (CVS) in Group Projects This is a basic How-To for using CVS in group projects. CVS is popular with many projects, especially open source packages hosted on sites like SourceForge. CVS is a very flexible and powerful tool, but its dozens of commands and options can be daunting for the new user. Many references tell you what the commands are for and how they work, but what is often missing is a list of common recipes for getting common tasks done. This guide will give you some simple command combinations for common tasks and some general principles. I try to focus on things the manual does not tell you. This How-To is geared toward the command-line (UNIX, Linux, BSD, or Mac OS X) user. If you are using a special GUI or CVS support built into your editor, this tutorial won't make sense to you. This is also not a manual substitute; use it as a starting point for exploring the manual and learning more powerful features. Getting the Code There are two basic ways to get code from CVS. Which one you use depends on what you want to do with it. The first method, 'cvs checkout' will give you the code with everything you need to commit your changes back to the shared repository. cvs checkout myproject This checks out a copy of 'myproject'. Specifically, it creates a local 'myproject' directory and puts a copy of the code in that directory. It will spit out a list of the files it is copying as it works. CVS creates a 'sandbox': a safe place where you can play with your own copy of the code without messing up anyone else. Nothing you do affects other developers until you commit changes back to the repository. You need to tell CVS where to get the project from, and this usually involves the '-d' option: cvs -d:ext:ericvought@cvs.sourceforge.net:/cvsroot/crystal checkout which can get fairly complex. I will not get into that here. Your project documentation or project manager should tell you what you need. After checkout, if you are in your project directory, CVS remembers the location and you do not need it anymore (it is stored in CVS/Root if you want to know). These options can be hard to type everytime you do a checkout, though, and it is easier to put it in an environment variable: export CVSROOT=:ext:ericvought@cvs.sourceforge.net:/cvsroot/crystalcvs checkout myproject Put the export command in your shell startup script (e.g. .bash_profile). If, like me, you work on more than one project, make a couple of variables: export CVS_CS=:ext:ericvought@cvs.sourceforge.net:/cvsroot/crystalexport CVS_LOCAL=:ext:evought@palantir:/cvsrootexport CVSROOT=$CVS_LOCAL Then you can select the other project two different ways: cvs -d$CVS_CS checkout cs ---or--- export CVSROOT=$CVS_CScvs checkout cs Another method of getting the code which is not mentioned nearly often enough is by 'cvs export'. This gives you a copy of the code *without* any of the version information and is particularly useful if 1) you just want to look at it, not work with it, 2) you are packaging it for someone else, or 3) you want to pull it in to your own repository as a starting point for your own work. cvs export -D now myproject Export is faster than checkout and all of the 'CVS' directories cvs normally creates will not be in the way when you are working with the code. '-D now' gets the latest version; check the manual for other ways of specifying the version to fetch. You can use a compression option (-z) with cvs and it is particularly useful when doing checkouts or exports over slow links: cvs -z3 checkout foo gets foo using a medium-fast compression and will usually use less time and bandwidth for the checkout. What Have I Done? OK, now you have the code. Maybe you've played with it a little. Maybe you have built it and do not know which files came from the repository and which from the compiler. 'cvs status' tells you some useful information about a file: Palantir:~/Projects/cs-tree/cs evought$ cvs status docs/history.txt===================================================================File: history.txt    Status: Up-to-date  Working revision:   1.8979  Repository revision: 1.8979  /cvsroot/crystal/CS/docs/history.txt,v  Sticky Tag:      (none)  Sticky Date:     (none)  Sticky Options:    (none) This file is up to date. Nothing has been changed, either locally or in the repository. Palantir:~/Projects/cs-tree/cs evought$ cvs status docs/history.txt===================================================================File: history.txt    Status: Locally Modified  Working revision:   1.8979  Repository revision: 1.8979  /cvsroot/crystal/CS/docs/history.txt,v  Sticky Tag:      (none)  Sticky Date:     (none)  Sticky Options:    (none) Now, status shows that the file is locally modified (changed by me).Next we see a file which has been changed by someone else and my copy is out of date. Note the different version numbers: Palantir:~/Projects/cs-tree/CS evought$ cvs status docs/history.txt===================================================================File: history.txt    Status: Needs Patch  Working revision:   1.8981  Repository revision: 1.8984  /cvsroot/crystal/CS/docs/history.txt,v  Sticky Tag:      (none)  Sticky Date:     (none)  Sticky Options:    (none) Now, what if I decide that I do not want my changes? I said above that nothing you do affects another developer until you commit changes. You can always abandon your whole checkout and get another copy. Individual changes can be backed out using some esoteric forms of the merge command, but to just undo a single file, the easiest way to do it is hard for some people to get used to: just delete the file. When you do a 'cvs update' the file will come back as good as new. Don't panic. It works. What Has Changed? At some point, you may want to find out what other people have been doing with your project. 'cvs status' is fine for a single file, but if you want to know what might have been changed in a whole directory tree, 'cvs update' is the way. 'update'?!, you ask.Won't that change my sandbox even if I do not want the changes? Yes, but you can tell it not to: cvs -qn update This is a magic recipe which tells CVS to check what is available without changing anything. The 'q' option tells it to summarize. Otherwise, it will tell you every time it checks a new directory, which, in many projects fills several screens and can obscure the actual changes. The output uses letter codes in front of the file names to tell you their status: A foo.txtM bar.txtU baz.txt? foo.bak 'foo.txt' is locally added; 'bar.txt' has been locally modified; baz.txt has an update in the repository, and 'foo.bak' us unknown. It is locally created and cvs does not know anything about it. If you clean your sandbox first, you will see less of the '?' unknown files (In many projects, this is 'make clean' or 'jam clean'). To find out more about the changes, use 'cvs log' and 'cvs diff'. cvs log -r -N 'cvs log' gives you the history of the file which will let you read the comments. The '-r' option lets you select which changes to view the comments from. With no argument as seen here, it gives the latest check-in, which is usually what you want. '-N' skips tag information which can be lengthy in some projects. cvs diff -c baz.txt 'cvs diff' gives you an output of exactly which lines were changed. The '-c' option outputs a context diff which gives you some of the unchanged lines on either side and is likely to be more readable than the 'standard' format. Commit Early and Often It is good manners and good practice to commit your changes often. Frequent commits makes it easier to sort out which changes may have broken something, makes for more specific log messages,and protects you work in case of local accident (accidental deletion, drive crash, whatever). Only commit something which works, though, so plan your changes to be in bite-sized, easily understandable chunks. Commit related changes to several files at once to make the log messages more understandable and so that other developers only get the complete set of changes. Update-Before-Commit Before you commit your changes, update your sandbox. This prevents conflicting changes from getting into the repository. The update may break your local code, but you are then in a position to fix it and you still have in mind what you have changed. If the repository version gets broken, someone will need to sort it out down the road and will not have a clue where to start. Do a 'cvs update' to get the latest version, compile, run whatever tests you have, then commit. Do Not Version Control Project Files (MSVC, etc.) As a general rule, never put IDE project files into the repository (for MSVC or CodeWarrior for instance). The project files do not version control well. When two developers each add a file, a conflict occurs and some of the project formats are ugly to change by hand. Even if everyone uses the same IDE, the project files often save your individual preferences and people start fighting over the back-and-forth updates. If different IDEs are used, multiple project files have to be maintained and a nightmare ensues when files are added or removed. It is generally much better to use stand-alone build tools like 'make', 'jam' or 'ant' and let people use whatever editor they wish. You can keep your own IDE project file in a different directory (outside the code) or just use an editor which does not need them. Use Your ~/.cvsrc CVS allows you to create a file in your home directory to specify the common options you use. The file is called '.cvsrc' and contains one command per line. 'cvs' specifies global options and a command name specifies options for that command. For example: cvs -z3 -qupdate -ddiff -c This saves a good bit of later typing. ('update -d' adds any directories to your sandbox which are new in the repository; normally you have to use 'checkout' to get new subdirectories.)If you want to use a different option for a particular command, say, no compression, specify something different: cvs -z0 checkout foo Will use no compression. Also, you can use the -f option to ignore what you specified in your .cvsrc file for that command: cvs -f checkout foo Scripting Makes It Easier CVS is very powerful and flexible; it also is designed to be combined with scripting, and some lightweight scripts can your job faster and easier. Consider: cvs -f -qn update -d |grep -v '^?' This forces CVS to ignore options in the .cvsrc ('-f', always wise with scripts), quietly ('-q') and without changing anything ('-n') check for updates, including new subdirectories ('-d'), then pipes the output through grep (search utility) and removes ('-v') any line which starts with a question mark ('^?'). This gives you a quick look at what has changed without seeing local build files, editor backups and so forth and without having to clean your local tree and then possibly rebuild. It is a bit much to type each time, but putting it in a shell script or function named 'cvscheck', or instance, can make your job much more pleasant. Conclusion Well, hopefully, you have a few pointers in the right direction. In an active project, you will spend a lot of time using CVS, so it is worth putting in the effort to learn and explore. Changes 2 Dec 2009 - Fixed many typos. Fixed cvs export example (missing project directory argument). Made it more clear what the '-f' option does.