<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>Graham's How-To Guides</title><description>Graham's occasional publications of how-to's, guides and summaries.</description><managingEditor>noreply@blogger.com (Graham Poulter)</managingEditor><pubDate>Thu, 30 Nov 2023 18:54:17 GMT</pubDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">21</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">25</openSearch:itemsPerPage><link>http://blog.grahampoulter.com/</link><language>en-us</language><itunes:explicit>no</itunes:explicit><itunes:subtitle>Graham's occasional publications of how-to's, guides and summaries.</itunes:subtitle><itunes:category text="Society &amp; Culture"/><itunes:owner><itunes:email>noreply@blogger.com</itunes:email></itunes:owner><item><title>Electromagnetic Field Theories of Consciousness</title><link>http://blog.grahampoulter.com/2022/09/em-theories-of-consciousness.html</link><category>opinions</category><category>reviews</category><author>noreply@blogger.com (Graham Poulter)</author><pubDate>Sat, 10 Sep 2022 23:30:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-22557003.post-4541884739156578982</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvl6o00gkGFjlXb_i0zc1shTVjYrMKHN-EQ8NMlOsoq-jNt1iwSTT4DCGBATpzwGJt5Do3pJpFplnnLKtCremrgeTbF0HYS7RrYEO-lWihxJf-WEwf6E1J-lXaSdQS1TJ0QDjP2U307cegpxAX_dAk0FWsDoXHLc-hBrCYBEQRSta1yZK3kS8/s685/em-field.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="From https://www.nature.com/articles/s41598-018-31054-9" border="0" data-original-height="331" data-original-width="685" height="155" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvl6o00gkGFjlXb_i0zc1shTVjYrMKHN-EQ8NMlOsoq-jNt1iwSTT4DCGBATpzwGJt5Do3pJpFplnnLKtCremrgeTbF0HYS7RrYEO-lWihxJf-WEwf6E1J-lXaSdQS1TJ0QDjP2U307cegpxAX_dAk0FWsDoXHLc-hBrCYBEQRSta1yZK3kS8/w320-h155/em-field.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Lately I've been captivated by an idea:&amp;nbsp;&amp;nbsp;&lt;a href="https://en.wikipedia.org/wiki/Electromagnetic_theories_of_consciousness"&gt;electromagnetic theories of consciousness&lt;/a&gt;, which hypothesise that conscious experiences are identical with certain electromagnetic (EM) patterns generated by the brain (&lt;a href="https://philpapers.org/rec/POCTEF"&gt;Pockett, 2012&lt;/a&gt;). The central claim of these theories is that spatiotemporally integrated information in an electromagnetic field&amp;nbsp;&lt;i&gt;feels like something.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://philpeople.org/profiles/mostyn-w-jones"&gt;Dr Mostyn W. Jones&lt;/a&gt;, a philosopher of mind at University of Manchester,&amp;nbsp;provides a good summary and comparison of EM theories of consciousness (&lt;a href="https://philpapers.org/archive/JONETO.pdf"&gt;2013&lt;/a&gt;), which come in a range of flavors: computationalist, reductionist, dualist, realist, interactionist, epiphenomenalist, globalist, or localist.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;b&gt;What's the physical basis?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Each neuron when firing generates an electric dipole field, and the overlap of these fields from the firing of many neurons across the brain produces an ever-changing and unified brain-wide electromagnetic field of extraordinary complexity. That much is known. EM field theories of consciousness take the leap of identifying this EM field with the contents of consciousness.&lt;/p&gt;&lt;p&gt;Electromagnetism is singled out from the other fundamental forces: gravity is too simple in field structure, and the nuclear forces are too short-range to integrate a large amount of complex information.&lt;/p&gt;&lt;p&gt;&lt;b&gt;What makes the theories appealing?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The most appealing feature of locating consciousness in the brain's electromagnetic field is that it solves the &lt;a href="https://en.wikipedia.org/wiki/Binding_problem"&gt;binding problem&lt;/a&gt;: the field unifies the disparate information about the visual field, sounds, smells, thoughts, bodily sensations and so forth. Without binding, one has 86 billion individual neurons firing, various brain regions processing different aspects of sensory input, and no way to "put it all together" into a single unified experience of consciousness.&lt;/p&gt;&lt;p&gt;It makes sense that consciousness derives from the &lt;i&gt;electrical&lt;/i&gt; activity in the brain, as that's what changes sub-second timescales. The chemical communications between neurons and the physical wiring up of synapses are slower processes, participating in&amp;nbsp;&lt;i&gt;learning&lt;/i&gt;&amp;nbsp;rather than consciousness.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Who is working on it?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://www.informationphilosopher.com/solutions/scientists/pockett/"&gt;Dr Susan Pockett&lt;/a&gt;, a neurophysiologist at the University of Auckland has brought the most rigor to EM field theories of consciousness, drawing extensively on EEG and MEG studies showing correlations between sensory qualia and field patterns (&lt;a href="https://philpapers.org/archive/JONETO.pdf"&gt;Jones, 2013&lt;/a&gt;). It's a difficult study this intersection of neurophysiology, physics, and metaphysics.&lt;/p&gt;&lt;p&gt;An enthusiastic proponent of "cemi" or "conscious electromagnetic information" is&amp;nbsp;&lt;a href="https://johnjoemcfadden.co.uk/about/"&gt;Johnjoe Mcfadden&lt;/a&gt;, a professor of molecular genetics at University of Surrey and author of&amp;nbsp;&lt;a href="https://www.amazon.co.uk/Life-Edge-Coming-Quantum-Biology-ebook/dp/B00LW3YISO"&gt;Life on the Edge&lt;/a&gt;. Mcfadden has eagerly proposed roles for quantum coherence, tunneling and entanglement in various aspects of biology, but seems to have a poor grasp of the physics. His writings on (&lt;a href="http://dx.doi.org/10.1093/nc/niaa016"&gt;2020&lt;/a&gt;) writing are inspirational, but not rigorous.&lt;/p&gt;&lt;p&gt;EM theories of consciousness are &lt;i&gt;not&lt;/i&gt; popular. The main theories are information-based theories such as higher-order theory, global workspaces theories, integrated information theory, and predictive processing theory (&lt;a href="https://twitter.com/anilkseth/status/1521832025744941060?lang=en"&gt;Seth 2022&lt;/a&gt;). These theories all focus on the&amp;nbsp;&lt;i&gt;information processing&lt;/i&gt;&amp;nbsp;done by the brain. Pockett is really the only researcher putting their name behind EM fields in 2022.&lt;/p&gt;&lt;p&gt;The prevailing view seems to be that the EM fields generated by neurons are as relevant to understanding how brains generate consciousness as exhaust gases are to understanding how cars propel themselves.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;b&gt;What would EM field consciousness imply for AI?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;EM field theories of consciousness align with &lt;a href="https://plato.stanford.edu/entries/chinese-room/"&gt;Searle's Chinese Room&lt;/a&gt;&amp;nbsp;thought experiment: that &lt;i&gt;sequentially&lt;/i&gt; integrating information one step at a time in a computer will not produce a conscious experience. Even a whole-brain simulation would produce a &lt;a href="https://en.wikipedia.org/wiki/Philosophical_zombie"&gt;philosophical zombie&lt;/a&gt; that &lt;i&gt;does not&lt;/i&gt;&amp;nbsp;achieve consciousness, and may not even behave like the original. And in general, a&amp;nbsp;&lt;a href="https://www.sciencedirect.com/topics/computer-science/von-neumann-architectur"&gt;Von Neumann architecture&lt;/a&gt;&amp;nbsp;machine, whatever software it is running, would not produce a field that integrates all the information at once.&amp;nbsp; In contrast, prevailing theories of consciousness suggest that the right kind of information processing will yield consciousness, even in software.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Dr Pockett speculates that should be possible to build hardware that generates a conscious EM field, talking about a box that solely experiences "hearing middle C", and eventually building conscious machines.&lt;/p&gt;&lt;p&gt;Mind uploading still seems far from feasible: from picking apart a brain down to a molecular level of detail, to building equivalent (but more robust) hardware that produces the same EM field patterns, it all seems far beyond the horizon of technology I can imagine.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Is consciousness an epiphenomenon?&lt;/b&gt;&lt;/p&gt;&lt;div&gt;In Dr Pockett's view, consciousness is an &lt;a href="https://en.wikipedia.org/wiki/Epiphenomenalism"&gt;epiphenomenon&lt;/a&gt;, having no causal power over behavior. The argument goes that electric dipole fields fall off to the third power with distance, so the field generated by any neuron is too weak to influence the firing of neurons that it's not already electrically connected to. Dr Pocker also references (still-controversial) experiments that suggest the feeling of "consciously making a choice" occurs some time&amp;nbsp;&lt;i&gt;after&lt;/i&gt; the decision is observable in measurements. That claim that goes further than determinism, making one not just a deterministic decider, but a passive after-the-fact observer of unconscious decisions.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;McFadden argues that the&amp;nbsp;&lt;i&gt;synchronized&amp;nbsp;&lt;/i&gt;firing of many neurons would produces a field strong enough field to modulate the firing of other neurons further away, and is responsible for the feeling of "conscious free will" - a compatibilist notion of free will, since the evolution of the field is of course deterministic. That's a dualistic two-way street where matter generates a mind-field, and the mind-field influences the matter.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Personally, I favor conscious qualia having some modulating effect on neurons, if only because it provides a reason to &lt;i&gt;evolve&lt;/i&gt;&amp;nbsp;consciousness, as an adaptation that improves decision making. If the EM field is an epiphenomenon, it would be an extraordinary coincidence that neurons generate fields having the right structure for &lt;a href="https://plato.stanford.edu/entries/qualia/"&gt;qualia&lt;/a&gt;. After all, some types of neuron generate no significant dipole field - such as &lt;a href="https://en.wikipedia.org/wiki/Stellate_cell"&gt;stellate neurons&lt;/a&gt;, which to be fair are only implicated in &lt;i&gt;un&lt;/i&gt;conscious processes. On the other hand, consciousness is clearly not &lt;i&gt;necessary&lt;/i&gt;&amp;nbsp;for decision making, as ML models demonstrate that integrating information in a sequential manner suffices to make high level decisions, such as driving a car.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;What are the objections?&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some objections to field theories of consciousness:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. Common external fields don't interfere with consciousness. Defence: strong fields such as transcranial magnetic stimulation do interfere with consciousness. Everyday EM fields would not interfere with consciousness because they lack the detailed pattern to&amp;nbsp;&lt;i&gt;destructively interfere &lt;/i&gt;with the conscious field.&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;2. EM theories of consciousness are not testable. &lt;i&gt;Defense&lt;/i&gt;: theory predicts that experimenting with the EM fields in human brains will be a productive line of inquiry.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. Claiming that certain patterns of EM field "feel like something" presents an explanatory gap in this reductionist theory, a mystical leap from the physical to experiential. It seems a gateway to &lt;a href="https://iep.utm.edu/panpsych/"&gt;pansychism&lt;/a&gt;, ascribing&amp;nbsp;unobservable qualia of experience to observable quanta of energy.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4. EM theories do not explain how visual consciousness gains coherence. It's not going to be spatial like a mirror: the parts of the brain detecting colour and texture versus shape won't "line up", and combining signals of "horse shape" and "striped pattern" to perceive "zebra" comes in later layers of neurons.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Connection to nondual mindfulness mediation&lt;/b&gt;&lt;/div&gt;&lt;div&gt;I have also approached consciousness from an angle nondual mindfulness meditation&amp;nbsp; - see&amp;nbsp;&lt;a href="https://www.clearerthinking.org/post/can-you-experience-enlightenment-through-sam-harris-meditation-app"&gt;ClearerThinking&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;p&gt;In a state of nondual mindful awareness there is only an open experience of the contents of consciousness, without a sense of a "self" or "observer" or "driver" behind the eyes. When the sense of "observer self" reasserts, it then does so as another thought or sensation in the open field of conscious awareness. The meditation app &lt;a href="https://www.wakingup.com/"&gt;Waking Up&lt;/a&gt; by Sam Harris teaches one how to achieve a nondual state by practising the art of "looking for the self, and failing to find it", and compares achieving nondual mindfulness to flipping the state of a visual illusion like a &lt;a href="https://en.wikipedia.org/wiki/Necker_cube"&gt;Necker cube&lt;/a&gt;, or seeing the reflection in a window instead of looking through it. Something about this trick brings to my mind the Hitchhiker's Guide to the Galaxy, on the art of&amp;nbsp;&lt;a href="https://hitchhikers.fandom.com/wiki/Flying"&gt;learning to fly by accidentally missing the ground&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;I think nondual mindfulness aligns well with EM theories of consciousness, by identifying the contents of consciousness with contents of the EM field: a bundle of qualia without a privileged "observer self" watching the show.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;/p&gt;&lt;p&gt;EM field theories of consciousness appeal to me because the binding problem posed an impenetrable mystery to me for many years, while an electromagnetic field detailed enough to incorporate all the information seems intuitively like an answer.&lt;/p&gt;&lt;p&gt;That said, the idea still leaves mysteries such as why should a specific spatiotemporal pattern of EM field&amp;nbsp;&lt;i&gt;feel&amp;nbsp;like something? &lt;/i&gt;No good reason comes to mind.&lt;i&gt;&amp;nbsp;&lt;/i&gt;And such a wide &lt;i&gt;variety &lt;/i&gt;of qualia too: colors, sounds, smells, touch, proprioception, emotions, and whatever it is that bats experience through echolocation, all integrated in a coherent manner.&lt;/p&gt;&lt;p&gt;I am hopeful that the field of consciousness studies will begin to unravel the mysteries of consciousness. I do love a good mystery, especially the part of figuring it out.&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvl6o00gkGFjlXb_i0zc1shTVjYrMKHN-EQ8NMlOsoq-jNt1iwSTT4DCGBATpzwGJt5Do3pJpFplnnLKtCremrgeTbF0HYS7RrYEO-lWihxJf-WEwf6E1J-lXaSdQS1TJ0QDjP2U307cegpxAX_dAk0FWsDoXHLc-hBrCYBEQRSta1yZK3kS8/s72-w320-h155-c/em-field.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><enclosure length="-1" type="application/pdf" url="https://philpapers.org/archive/JONETO.pdf"/><itunes:explicit>no</itunes:explicit><itunes:subtitle>Lately I've been captivated by an idea:&amp;nbsp;&amp;nbsp;electromagnetic theories of consciousness, which hypothesise that conscious experiences are identical with certain electromagnetic (EM) patterns generated by the brain (Pockett, 2012). The central claim of these theories is that spatiotemporally integrated information in an electromagnetic field&amp;nbsp;feels like something. Dr Mostyn W. Jones, a philosopher of mind at University of Manchester,&amp;nbsp;provides a good summary and comparison of EM theories of consciousness (2013), which come in a range of flavors: computationalist, reductionist, dualist, realist, interactionist, epiphenomenalist, globalist, or localist.&amp;nbsp;&amp;nbsp; What's the physical basis? Each neuron when firing generates an electric dipole field, and the overlap of these fields from the firing of many neurons across the brain produces an ever-changing and unified brain-wide electromagnetic field of extraordinary complexity. That much is known. EM field theories of consciousness take the leap of identifying this EM field with the contents of consciousness. Electromagnetism is singled out from the other fundamental forces: gravity is too simple in field structure, and the nuclear forces are too short-range to integrate a large amount of complex information. What makes the theories appealing? The most appealing feature of locating consciousness in the brain's electromagnetic field is that it solves the binding problem: the field unifies the disparate information about the visual field, sounds, smells, thoughts, bodily sensations and so forth. Without binding, one has 86 billion individual neurons firing, various brain regions processing different aspects of sensory input, and no way to "put it all together" into a single unified experience of consciousness. It makes sense that consciousness derives from the electrical activity in the brain, as that's what changes sub-second timescales. The chemical communications between neurons and the physical wiring up of synapses are slower processes, participating in&amp;nbsp;learning&amp;nbsp;rather than consciousness. Who is working on it? Dr Susan Pockett, a neurophysiologist at the University of Auckland has brought the most rigor to EM field theories of consciousness, drawing extensively on EEG and MEG studies showing correlations between sensory qualia and field patterns (Jones, 2013). It's a difficult study this intersection of neurophysiology, physics, and metaphysics. An enthusiastic proponent of "cemi" or "conscious electromagnetic information" is&amp;nbsp;Johnjoe Mcfadden, a professor of molecular genetics at University of Surrey and author of&amp;nbsp;Life on the Edge. Mcfadden has eagerly proposed roles for quantum coherence, tunneling and entanglement in various aspects of biology, but seems to have a poor grasp of the physics. His writings on (2020) writing are inspirational, but not rigorous. EM theories of consciousness are not popular. The main theories are information-based theories such as higher-order theory, global workspaces theories, integrated information theory, and predictive processing theory (Seth 2022). These theories all focus on the&amp;nbsp;information processing&amp;nbsp;done by the brain. Pockett is really the only researcher putting their name behind EM fields in 2022. The prevailing view seems to be that the EM fields generated by neurons are as relevant to understanding how brains generate consciousness as exhaust gases are to understanding how cars propel themselves.&amp;nbsp; What would EM field consciousness imply for AI? EM field theories of consciousness align with Searle's Chinese Room&amp;nbsp;thought experiment: that sequentially integrating information one step at a time in a computer will not produce a conscious experience. Even a whole-brain simulation would produce a philosophical zombie that does not&amp;nbsp;achieve consciousness, and may not even behave like the original. And in general, a&amp;nbsp;Von Neumann architecture&amp;nbsp;machine, whatever software it is running, would not produce a field that integrates all the information at once.&amp;nbsp; In contrast, prevailing theories of consciousness suggest that the right kind of information processing will yield consciousness, even in software.&amp;nbsp; Dr Pockett speculates that should be possible to build hardware that generates a conscious EM field, talking about a box that solely experiences "hearing middle C", and eventually building conscious machines. Mind uploading still seems far from feasible: from picking apart a brain down to a molecular level of detail, to building equivalent (but more robust) hardware that produces the same EM field patterns, it all seems far beyond the horizon of technology I can imagine. Is consciousness an epiphenomenon?In Dr Pockett's view, consciousness is an epiphenomenon, having no causal power over behavior. The argument goes that electric dipole fields fall off to the third power with distance, so the field generated by any neuron is too weak to influence the firing of neurons that it's not already electrically connected to. Dr Pocker also references (still-controversial) experiments that suggest the feeling of "consciously making a choice" occurs some time&amp;nbsp;after the decision is observable in measurements. That claim that goes further than determinism, making one not just a deterministic decider, but a passive after-the-fact observer of unconscious decisions. McFadden argues that the&amp;nbsp;synchronized&amp;nbsp;firing of many neurons would produces a field strong enough field to modulate the firing of other neurons further away, and is responsible for the feeling of "conscious free will" - a compatibilist notion of free will, since the evolution of the field is of course deterministic. That's a dualistic two-way street where matter generates a mind-field, and the mind-field influences the matter. Personally, I favor conscious qualia having some modulating effect on neurons, if only because it provides a reason to evolve&amp;nbsp;consciousness, as an adaptation that improves decision making. If the EM field is an epiphenomenon, it would be an extraordinary coincidence that neurons generate fields having the right structure for qualia. After all, some types of neuron generate no significant dipole field - such as stellate neurons, which to be fair are only implicated in unconscious processes. On the other hand, consciousness is clearly not necessary&amp;nbsp;for decision making, as ML models demonstrate that integrating information in a sequential manner suffices to make high level decisions, such as driving a car. What are the objections? Some objections to field theories of consciousness: 1. Common external fields don't interfere with consciousness. Defence: strong fields such as transcranial magnetic stimulation do interfere with consciousness. Everyday EM fields would not interfere with consciousness because they lack the detailed pattern to&amp;nbsp;destructively interfere with the conscious field. 2. EM theories of consciousness are not testable. Defense: theory predicts that experimenting with the EM fields in human brains will be a productive line of inquiry. 3. Claiming that certain patterns of EM field "feel like something" presents an explanatory gap in this reductionist theory, a mystical leap from the physical to experiential. It seems a gateway to pansychism, ascribing&amp;nbsp;unobservable qualia of experience to observable quanta of energy.&amp;nbsp; 4. EM theories do not explain how visual consciousness gains coherence. It's not going to be spatial like a mirror: the parts of the brain detecting colour and texture versus shape won't "line up", and combining signals of "horse shape" and "striped pattern" to perceive "zebra" comes in later layers of neurons. Connection to nondual mindfulness mediationI have also approached consciousness from an angle nondual mindfulness meditation&amp;nbsp; - see&amp;nbsp;ClearerThinking.&amp;nbsp; In a state of nondual mindful awareness there is only an open experience of the contents of consciousness, without a sense of a "self" or "observer" or "driver" behind the eyes. When the sense of "observer self" reasserts, it then does so as another thought or sensation in the open field of conscious awareness. The meditation app Waking Up by Sam Harris teaches one how to achieve a nondual state by practising the art of "looking for the self, and failing to find it", and compares achieving nondual mindfulness to flipping the state of a visual illusion like a Necker cube, or seeing the reflection in a window instead of looking through it. Something about this trick brings to my mind the Hitchhiker's Guide to the Galaxy, on the art of&amp;nbsp;learning to fly by accidentally missing the ground. I think nondual mindfulness aligns well with EM theories of consciousness, by identifying the contents of consciousness with contents of the EM field: a bundle of qualia without a privileged "observer self" watching the show. Conclusion EM field theories of consciousness appeal to me because the binding problem posed an impenetrable mystery to me for many years, while an electromagnetic field detailed enough to incorporate all the information seems intuitively like an answer. That said, the idea still leaves mysteries such as why should a specific spatiotemporal pattern of EM field&amp;nbsp;feel&amp;nbsp;like something? No good reason comes to mind.&amp;nbsp;And such a wide variety of qualia too: colors, sounds, smells, touch, proprioception, emotions, and whatever it is that bats experience through echolocation, all integrated in a coherent manner. I am hopeful that the field of consciousness studies will begin to unravel the mysteries of consciousness. I do love a good mystery, especially the part of figuring it out.</itunes:subtitle><itunes:author>noreply@blogger.com (Graham Poulter)</itunes:author><itunes:summary>Lately I've been captivated by an idea:&amp;nbsp;&amp;nbsp;electromagnetic theories of consciousness, which hypothesise that conscious experiences are identical with certain electromagnetic (EM) patterns generated by the brain (Pockett, 2012). The central claim of these theories is that spatiotemporally integrated information in an electromagnetic field&amp;nbsp;feels like something. Dr Mostyn W. Jones, a philosopher of mind at University of Manchester,&amp;nbsp;provides a good summary and comparison of EM theories of consciousness (2013), which come in a range of flavors: computationalist, reductionist, dualist, realist, interactionist, epiphenomenalist, globalist, or localist.&amp;nbsp;&amp;nbsp; What's the physical basis? Each neuron when firing generates an electric dipole field, and the overlap of these fields from the firing of many neurons across the brain produces an ever-changing and unified brain-wide electromagnetic field of extraordinary complexity. That much is known. EM field theories of consciousness take the leap of identifying this EM field with the contents of consciousness. Electromagnetism is singled out from the other fundamental forces: gravity is too simple in field structure, and the nuclear forces are too short-range to integrate a large amount of complex information. What makes the theories appealing? The most appealing feature of locating consciousness in the brain's electromagnetic field is that it solves the binding problem: the field unifies the disparate information about the visual field, sounds, smells, thoughts, bodily sensations and so forth. Without binding, one has 86 billion individual neurons firing, various brain regions processing different aspects of sensory input, and no way to "put it all together" into a single unified experience of consciousness. It makes sense that consciousness derives from the electrical activity in the brain, as that's what changes sub-second timescales. The chemical communications between neurons and the physical wiring up of synapses are slower processes, participating in&amp;nbsp;learning&amp;nbsp;rather than consciousness. Who is working on it? Dr Susan Pockett, a neurophysiologist at the University of Auckland has brought the most rigor to EM field theories of consciousness, drawing extensively on EEG and MEG studies showing correlations between sensory qualia and field patterns (Jones, 2013). It's a difficult study this intersection of neurophysiology, physics, and metaphysics. An enthusiastic proponent of "cemi" or "conscious electromagnetic information" is&amp;nbsp;Johnjoe Mcfadden, a professor of molecular genetics at University of Surrey and author of&amp;nbsp;Life on the Edge. Mcfadden has eagerly proposed roles for quantum coherence, tunneling and entanglement in various aspects of biology, but seems to have a poor grasp of the physics. His writings on (2020) writing are inspirational, but not rigorous. EM theories of consciousness are not popular. The main theories are information-based theories such as higher-order theory, global workspaces theories, integrated information theory, and predictive processing theory (Seth 2022). These theories all focus on the&amp;nbsp;information processing&amp;nbsp;done by the brain. Pockett is really the only researcher putting their name behind EM fields in 2022. The prevailing view seems to be that the EM fields generated by neurons are as relevant to understanding how brains generate consciousness as exhaust gases are to understanding how cars propel themselves.&amp;nbsp; What would EM field consciousness imply for AI? EM field theories of consciousness align with Searle's Chinese Room&amp;nbsp;thought experiment: that sequentially integrating information one step at a time in a computer will not produce a conscious experience. Even a whole-brain simulation would produce a philosophical zombie that does not&amp;nbsp;achieve consciousness, and may not even behave like the original. And in general, a&amp;nbsp;Von Neumann architecture&amp;nbsp;machine, whatever software it is running, would not produce a field that integrates all the information at once.&amp;nbsp; In contrast, prevailing theories of consciousness suggest that the right kind of information processing will yield consciousness, even in software.&amp;nbsp; Dr Pockett speculates that should be possible to build hardware that generates a conscious EM field, talking about a box that solely experiences "hearing middle C", and eventually building conscious machines. Mind uploading still seems far from feasible: from picking apart a brain down to a molecular level of detail, to building equivalent (but more robust) hardware that produces the same EM field patterns, it all seems far beyond the horizon of technology I can imagine. Is consciousness an epiphenomenon?In Dr Pockett's view, consciousness is an epiphenomenon, having no causal power over behavior. The argument goes that electric dipole fields fall off to the third power with distance, so the field generated by any neuron is too weak to influence the firing of neurons that it's not already electrically connected to. Dr Pocker also references (still-controversial) experiments that suggest the feeling of "consciously making a choice" occurs some time&amp;nbsp;after the decision is observable in measurements. That claim that goes further than determinism, making one not just a deterministic decider, but a passive after-the-fact observer of unconscious decisions. McFadden argues that the&amp;nbsp;synchronized&amp;nbsp;firing of many neurons would produces a field strong enough field to modulate the firing of other neurons further away, and is responsible for the feeling of "conscious free will" - a compatibilist notion of free will, since the evolution of the field is of course deterministic. That's a dualistic two-way street where matter generates a mind-field, and the mind-field influences the matter. Personally, I favor conscious qualia having some modulating effect on neurons, if only because it provides a reason to evolve&amp;nbsp;consciousness, as an adaptation that improves decision making. If the EM field is an epiphenomenon, it would be an extraordinary coincidence that neurons generate fields having the right structure for qualia. After all, some types of neuron generate no significant dipole field - such as stellate neurons, which to be fair are only implicated in unconscious processes. On the other hand, consciousness is clearly not necessary&amp;nbsp;for decision making, as ML models demonstrate that integrating information in a sequential manner suffices to make high level decisions, such as driving a car. What are the objections? Some objections to field theories of consciousness: 1. Common external fields don't interfere with consciousness. Defence: strong fields such as transcranial magnetic stimulation do interfere with consciousness. Everyday EM fields would not interfere with consciousness because they lack the detailed pattern to&amp;nbsp;destructively interfere with the conscious field. 2. EM theories of consciousness are not testable. Defense: theory predicts that experimenting with the EM fields in human brains will be a productive line of inquiry. 3. Claiming that certain patterns of EM field "feel like something" presents an explanatory gap in this reductionist theory, a mystical leap from the physical to experiential. It seems a gateway to pansychism, ascribing&amp;nbsp;unobservable qualia of experience to observable quanta of energy.&amp;nbsp; 4. EM theories do not explain how visual consciousness gains coherence. It's not going to be spatial like a mirror: the parts of the brain detecting colour and texture versus shape won't "line up", and combining signals of "horse shape" and "striped pattern" to perceive "zebra" comes in later layers of neurons. Connection to nondual mindfulness mediationI have also approached consciousness from an angle nondual mindfulness meditation&amp;nbsp; - see&amp;nbsp;ClearerThinking.&amp;nbsp; In a state of nondual mindful awareness there is only an open experience of the contents of consciousness, without a sense of a "self" or "observer" or "driver" behind the eyes. When the sense of "observer self" reasserts, it then does so as another thought or sensation in the open field of conscious awareness. The meditation app Waking Up by Sam Harris teaches one how to achieve a nondual state by practising the art of "looking for the self, and failing to find it", and compares achieving nondual mindfulness to flipping the state of a visual illusion like a Necker cube, or seeing the reflection in a window instead of looking through it. Something about this trick brings to my mind the Hitchhiker's Guide to the Galaxy, on the art of&amp;nbsp;learning to fly by accidentally missing the ground. I think nondual mindfulness aligns well with EM theories of consciousness, by identifying the contents of consciousness with contents of the EM field: a bundle of qualia without a privileged "observer self" watching the show. Conclusion EM field theories of consciousness appeal to me because the binding problem posed an impenetrable mystery to me for many years, while an electromagnetic field detailed enough to incorporate all the information seems intuitively like an answer. That said, the idea still leaves mysteries such as why should a specific spatiotemporal pattern of EM field&amp;nbsp;feel&amp;nbsp;like something? No good reason comes to mind.&amp;nbsp;And such a wide variety of qualia too: colors, sounds, smells, touch, proprioception, emotions, and whatever it is that bats experience through echolocation, all integrated in a coherent manner. I am hopeful that the field of consciousness studies will begin to unravel the mysteries of consciousness. I do love a good mystery, especially the part of figuring it out.</itunes:summary><itunes:keywords>opinions, reviews</itunes:keywords></item><item><title>Pandemic Fermentations</title><link>http://blog.grahampoulter.com/2021/02/pandemic-fermentations.html</link><author>noreply@blogger.com (Graham Poulter)</author><pubDate>Sun, 14 Feb 2021 16:32:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-22557003.post-8155634818286175258</guid><description>&lt;p&gt;Taken me a while to get into it, but I've started a fermentation hobby with the latest lock-downs.&lt;/p&gt;&lt;p&gt;With the latest round of lockdowns I've finally gotten into home fermentation.&amp;nbsp; Not beer, sadly.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Kombucha:&amp;nbsp;&lt;/b&gt;My wife started it off by ordering a Kombucha kit for us from &lt;a href="https://www.allaboutkombucha.ie/"&gt;allaboutkombucha.ie&lt;/a&gt;.&amp;nbsp; That was fun to set up with the brewing tea with the sugar and watching it ferment over days. We've made about 10 liters so far. Here is my &lt;a href="https://www.copymethat.com/r/GYDEMul/homebrew-kombucha/" target="_blank"&gt;kombucha recipe on copymethat&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Sourdough&lt;/b&gt;: Next I ordered a sourdough starter from &lt;a href="https://kefirgrains.ie/product/white-sourdough-starter/"&gt;kefirgrains.ie&lt;/a&gt;, and have been making small boules and pizzas. First attempts had issues of course, but I like the sense progress as each bake gets better. Still nowhere near YouTube quality though.&amp;nbsp; Here is my &lt;a href="https://www.copymethat.com/r/wJiddam/air-fryer-sourdough-boule/" target="_blank"&gt;sourdough recipe on copymethat&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Yogurt&lt;/b&gt;: Then I figured, why not yogurt? I always run out before the next delivery. I started by extending a &lt;a href="https://glenisk.com/products/organic-wholemilk-yogurt"&gt;Glenisk live yogurt&lt;/a&gt; (S. thermophilus + L. casei), and have been trying various ways to maintain temperature without a yogurt maker. For me, filling the rice cooker with hot water works, the double wall keeps it at 43 C for long enough. See my &lt;a href="https://www.copymethat.com/r/Sv8ovEO/rice-cooker-yogurt/" target="_blank"&gt;yogurt recipe on copymethat&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;b&gt;A-Fil Yogurt&lt;/b&gt;: Then I ordered an A-Fil yogurt starter from &lt;a href="https://kefirgrains.ie/product/organic-certified-a-fil-yogurt-starter-culture/"&gt;kefirgrains.ie&lt;/a&gt; - it's a similar to Filmjolk but more tart and ferments at room temperature overnight. It doesn't set, so you can just pour it onto muesli, then add more milk to the jar to start the next batch and leave it on top of the fridge to get a bit warmer - not in the fridge.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Yakult&lt;/b&gt;: My wife also drinks Yakult - those little bottles of L. casei shirota sugar-milk - and I found the same fermentation trick works as with regular yogurt, so now we have a much bigger bottle of Yakult.&amp;nbsp; It just takes longer, maybe 12 hours.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Froyo&lt;/b&gt;: You know what I haven't seen much of in Ireland - frozen yogurt! So I&amp;nbsp; strained the Glenisk-based yogurt through cheesecloth overnight, chilled it in the freezer, blended it with a frozen tin of strawberries, some vanilla, honey &amp;amp; sugar and a pinch of salt.&amp;nbsp; Then back to the freezer in a ziplock, smoosh it around every now and then for the first few hours, and you have FroYo! Here is my full &lt;a href="https://www.copymethat.com/r/of1Zbtx/fruity-home-made-frozen-yogurt/" target="_blank"&gt;froyo recipe on copymethat&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Here they all are: A-Fil, Yakult, Yogurt, Kombucha SCOBY, Sourdough starter and the FroYo.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://1.bp.blogspot.com/-eBLfufL1KnA/YClBjPkw73I/AAAAAAAEFSs/kp_yiVwsoLUAmZBQvKntBGzwa6vrIQ0GQCNcBGAsYHQ/s4032/PXL_20210214_135656768.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="3024" data-original-width="4032" height="480" src="https://1.bp.blogspot.com/-eBLfufL1KnA/YClBjPkw73I/AAAAAAAEFSs/kp_yiVwsoLUAmZBQvKntBGzwa6vrIQ0GQCNcBGAsYHQ/w640-h480/PXL_20210214_135656768.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-eBLfufL1KnA/YClBjPkw73I/AAAAAAAEFSs/kp_yiVwsoLUAmZBQvKntBGzwa6vrIQ0GQCNcBGAsYHQ/s72-w640-h480-c/PXL_20210214_135656768.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>How to spring-clean your blog</title><link>http://blog.grahampoulter.com/2018/06/spring-clean-organize-blog.html</link><category>skills</category><category>technical</category><author>noreply@blogger.com (Graham Poulter)</author><pubDate>Mon, 11 Jun 2018 21:27:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-22557003.post-3061715220224373794</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-1gYNt77cKDk/WzAYXFA3KkI/AAAAAAAC-uo/CaSiNRb3FSYZGm-1E8bFwBNKqTlrbajLgCLcBGAs/s1600/spring-clean-header.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="(spring-cleaning your blog)" border="0" data-original-height="400" data-original-width="712" src="https://1.bp.blogspot.com/-1gYNt77cKDk/WzAYXFA3KkI/AAAAAAAC-uo/CaSiNRb3FSYZGm-1E8bFwBNKqTlrbajLgCLcBGAs/s1600/spring-clean-header.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
Here are ways I found to clean up a Blogger blog. I've found and fixed many things with content, images, navigation, theme, descriptions, and analytics. [4 minutes]&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;
Spring-Cleaning Steps&lt;/h2&gt;
&lt;h3&gt;
Clean up the content&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Remove old posts&lt;/b&gt;: delete old posts with no traffic and no usefulness to readers. Also delete the comments.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Use headings&lt;/b&gt;: create proper headings and subheadings, since Blogger added support.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Remove cruft&lt;/b&gt;: remove broken links, outdated information and unhelpful asides.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Enhance clarity&lt;/b&gt;: clean up rambling bits, convert list-paragraphs to bullets, add bold titles to bullets.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Clean HTML&lt;/b&gt;: remove random HTML elements that crept in over time, to be tidy.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Remove blank paragraphs&lt;/b&gt;: remove white space to improve post appearance.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Add read times&lt;/b&gt;: add [5 minutes] etc time estimates to help readers decide.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
&lt;b&gt;Clean up the images&lt;/b&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Replace hotlinks&lt;/b&gt;: replace hotlinks with uploaded images. Prevents dead images and mixing of HTTP with HTTPS on the page.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Design images&lt;/b&gt;: using&amp;nbsp;&lt;a href="https://spark.adobe.com/"&gt;Adobe Spark&lt;/a&gt;&amp;nbsp;to create post images, it can dynamically reshape the image for each social network.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Replace old images&lt;/b&gt;: pick higher-resolution images for old low-res ones.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Alt text&lt;/b&gt;: add a text description of the image. Alt text overrides the page title for Pinterest description. Warning that if you don't set a Search Description (meta tag), description comes from first 140 characters of the post, which includes alt text from heading images.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Title text&lt;/b&gt;: optionally add text to show up on mouse-over. It overrides both page title and alt text to be the image description on Pinterest.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
Clean up the navigation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Revise titles&lt;/b&gt;: rework post titles be more direct (8-12 words, under 60 characters) using one or more key phrases from top organic searches.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Make intro concise&lt;/b&gt;: write intro paragraph under 200 characters to avoid truncation in mobile post list or Pinterest description. Keep each sentence under 140 characters to avoid truncation in search result snippets or shares.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Add Search Descriptions&lt;/b&gt;: enable under Settings:Search Preferences:Meta Description. Then add a Search Description to each post based off the 200-character intro.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Use broad labels&lt;/b&gt;: re-label using only a few categories, a category for each major audience, each post in 1 or 2 categories only.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Add internal links&lt;/b&gt;: add internal links to other posts a reader of this post might be interested in.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
Clean up the theme&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Pick theme&lt;/b&gt;: change from Contempo to Notable since images are not important in my posts.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Tweak timestamps&lt;/b&gt;: I removed the year from dates shown on the blog. My posts are so old &#128116;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Revise blog description:&lt;/b&gt; rewritten to sound better when sharing blog on social media.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Enable comments&lt;/b&gt;: switch from Google+ comments to Blogger comments, since commenting dropped off radically under Google+.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Tune AdSense fill rate&lt;/b&gt;: reduce fill rate from 60% to 5% to show fewer ads. I'm just playing with AdSense, only made €15 in 5 years anyway.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
Improve discoverability&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;a href="https://adwords.google.com/"&gt;AdWords&lt;/a&gt;:&lt;/b&gt; run a campaign for niche posts that aren't ranking yet, with custom redirects for a short URL for the ad.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Set up HTTPS&lt;/b&gt;: enable HTTPS by default and HTTPS redirection.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href="https://www.google.com/webmasters/tools/home"&gt;Webmaster Tools&lt;/a&gt;&lt;/b&gt;: added https:// domain and sitemap.xml to Google Webmaster Tools, also register with Bing Webmaster Tools.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href="https://analytics.google.com/"&gt;Google Analytics&lt;/a&gt;&lt;/b&gt;: add filter to exclude referrals from spam domains ("Campaign Source" filter), and exclude "m" in "Exclude URL Query Parameters" on the view, so you don't have two rows for each page.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Sharing + Follow Buttons&lt;/b&gt;: add proper sharing and follow buttons as Blogger built-in ones aren't great. Right now using Shareaholic with all the tracking and advertising crud turned off.&lt;/li&gt;
&lt;/ul&gt;
&lt;span style="font-weight: normal;"&gt;P.S. After you've decluttered your blog, try &lt;a href="https://blog.grahampoulter.com/2013/03/cutting-down-on-clutter-with-outbox.html"&gt;decluttering your home with the outbox method&lt;/a&gt;.&lt;/span&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-1gYNt77cKDk/WzAYXFA3KkI/AAAAAAAC-uo/CaSiNRb3FSYZGm-1E8bFwBNKqTlrbajLgCLcBGAs/s72-c/spring-clean-header.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><georss:featurename xmlns:georss="http://www.georss.org/georss">Dublin, Ireland</georss:featurename><georss:point xmlns:georss="http://www.georss.org/georss">53.3498053 -6.2603096999999934</georss:point><georss:box xmlns:georss="http://www.georss.org/georss">53.0463133 -6.9057566999999933 53.6532973 -5.6148626999999935</georss:box></item><item><title>How to extend the life of your clothes</title><link>http://blog.grahampoulter.com/2018/05/7-ways-to-make-clothes-last.html</link><category>lifehacks</category><author>noreply@blogger.com (Graham Poulter)</author><pubDate>Mon, 28 May 2018 23:13:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-22557003.post-5979373842227567604</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://2.bp.blogspot.com/-Br5rZ3AJHxs/WzAhYFzqEbI/AAAAAAAC-vo/YmQ0sCMCw5I1YP2le3-aum-Q0fLIBxsVwCLcBGAs/s1600/clothes-blog.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="How to extend the life of your clothes" border="0" data-original-height="400" data-original-width="712" src="https://2.bp.blogspot.com/-Br5rZ3AJHxs/WzAhYFzqEbI/AAAAAAAC-vo/YmQ0sCMCw5I1YP2le3-aum-Q0fLIBxsVwCLcBGAs/s1600/clothes-blog.jpg" title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Here are some tips on preserving your clothes! Ways to make the wash easier on the clothes, and increase the number of wears one can get between washes. [3 minutes]&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;h2&gt;Reduce the wear of washing&lt;/h2&gt;&lt;h4&gt;1. Wash clothes in laundry nets&lt;/h4&gt;Mesh laundry nets stop socks getting lost - they're all in a bag - and shield clothes from most of the friction-wear of laundering.&lt;br /&gt;
&lt;h4&gt;2. Choose the delicate wash cycle&lt;/h4&gt;The delicate cycle causes the least heat and friction damage. If animal fibers such as wool thermals are in the wash, use a non-bio detergent since the enzymes of bio detergents eat the proteins. Wool jumpers of course wash by hand with wool detergent.&lt;br /&gt;
&lt;h4&gt;3. Dry clothes on an airing rack&lt;/h4&gt;Air-drying causes less wear than tumble drying. The tumble-dried sheets and towels have visible wear over time.&lt;br /&gt;
&lt;h2&gt;Get more wears per wash&lt;/h2&gt;&lt;h4&gt;4. Air clothes on a rail after use&lt;/h4&gt;Airing worn clothes on a rail allows odors to disperse. One can cycle between shirts, with worn shirts airing on the rail instead of retaining odors in the wardrobe.&lt;br /&gt;
&lt;h4&gt;5. Air clothes outdoors&lt;/h4&gt;If otherwise clean pants or jackets fail the sniff test say due to spending the evening in a bar or restaurant, airing them outside for a day or two likely restores them without washing. Winter coats go years without dry-cleaning if aired properly.&lt;br /&gt;
&lt;h4&gt;6. Keep shoes on a shoe rack&lt;/h4&gt;Using a shoe rack keeps the smells of the city near the door instead of in the wardrobe, and helps keep the floor clean.&lt;br /&gt;
&lt;h4&gt;7. Shower in the evening&lt;/h4&gt;By showering in the evening the bed sheets can go 3 or even 4 weeks before feeling like they need a change. Showering in the morning, expect to wash the sheets every week.&lt;br /&gt;
&lt;h4&gt;Bonus tip: Down Jackets&lt;/h4&gt;Down jackets can be washed once a year after the cold season, with down detergent on a woolen cycle, then dried flat on an airing rack. To remove clumps from the down, follow with a 20-minute delicate-cycle tumble dry with tennis balls.&lt;br /&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;&lt;div style="clear: right; float: right;"&gt;&lt;a data-pin-do="embedPin" data-pin-terse="true" href="https://www.pinterest.com/pin/118149190210240278/"&gt;&lt;/a&gt;&lt;/div&gt;What do you think of these ways of making clothes last longer? Less wear from washing, more wears between washes. If you disagree or have more tips, comment below.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;P.S. check out my my advice for &lt;a href="http://blog.grahampoulter.com/2011/11/getting-smoke-smell-out-of-waterproof.html"&gt;removing smoke smells from waterproof jackets&lt;/a&gt;&amp;nbsp;and &lt;a href="http://blog.grahampoulter.com/2013/03/cutting-down-on-clutter-with-outbox.html"&gt;decluttering your home with the outbox method&lt;/a&gt;.&lt;/i&gt;</description><enclosure length="0" type="audio/x-m4a" url="https://anchor.fm/s/4c4eefc/podcast/play/713006/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fanchor-audio-bank%2Fstaging%2F2018-5-9%2FMaking-clothes-last-longer-a90f631becbb.m4a"/><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://2.bp.blogspot.com/-Br5rZ3AJHxs/WzAhYFzqEbI/AAAAAAAC-vo/YmQ0sCMCw5I1YP2le3-aum-Q0fLIBxsVwCLcBGAs/s72-c/clothes-blog.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><itunes:explicit>no</itunes:explicit><itunes:subtitle>Here are some tips on preserving your clothes! Ways to make the wash easier on the clothes, and increase the number of wears one can get between washes. [3 minutes] Reduce the wear of washing1. Wash clothes in laundry netsMesh laundry nets stop socks getting lost - they're all in a bag - and shield clothes from most of the friction-wear of laundering. 2. Choose the delicate wash cycleThe delicate cycle causes the least heat and friction damage. If animal fibers such as wool thermals are in the wash, use a non-bio detergent since the enzymes of bio detergents eat the proteins. Wool jumpers of course wash by hand with wool detergent. 3. Dry clothes on an airing rackAir-drying causes less wear than tumble drying. The tumble-dried sheets and towels have visible wear over time. Get more wears per wash4. Air clothes on a rail after useAiring worn clothes on a rail allows odors to disperse. One can cycle between shirts, with worn shirts airing on the rail instead of retaining odors in the wardrobe. 5. Air clothes outdoorsIf otherwise clean pants or jackets fail the sniff test say due to spending the evening in a bar or restaurant, airing them outside for a day or two likely restores them without washing. Winter coats go years without dry-cleaning if aired properly. 6. Keep shoes on a shoe rackUsing a shoe rack keeps the smells of the city near the door instead of in the wardrobe, and helps keep the floor clean. 7. Shower in the eveningBy showering in the evening the bed sheets can go 3 or even 4 weeks before feeling like they need a change. Showering in the morning, expect to wash the sheets every week. Bonus tip: Down JacketsDown jackets can be washed once a year after the cold season, with down detergent on a woolen cycle, then dried flat on an airing rack. To remove clumps from the down, follow with a 20-minute delicate-cycle tumble dry with tennis balls. ConclusionWhat do you think of these ways of making clothes last longer? Less wear from washing, more wears between washes. If you disagree or have more tips, comment below. P.S. check out my my advice for removing smoke smells from waterproof jackets&amp;nbsp;and decluttering your home with the outbox method.</itunes:subtitle><itunes:author>noreply@blogger.com (Graham Poulter)</itunes:author><itunes:summary>Here are some tips on preserving your clothes! Ways to make the wash easier on the clothes, and increase the number of wears one can get between washes. [3 minutes] Reduce the wear of washing1. Wash clothes in laundry netsMesh laundry nets stop socks getting lost - they're all in a bag - and shield clothes from most of the friction-wear of laundering. 2. Choose the delicate wash cycleThe delicate cycle causes the least heat and friction damage. If animal fibers such as wool thermals are in the wash, use a non-bio detergent since the enzymes of bio detergents eat the proteins. Wool jumpers of course wash by hand with wool detergent. 3. Dry clothes on an airing rackAir-drying causes less wear than tumble drying. The tumble-dried sheets and towels have visible wear over time. Get more wears per wash4. Air clothes on a rail after useAiring worn clothes on a rail allows odors to disperse. One can cycle between shirts, with worn shirts airing on the rail instead of retaining odors in the wardrobe. 5. Air clothes outdoorsIf otherwise clean pants or jackets fail the sniff test say due to spending the evening in a bar or restaurant, airing them outside for a day or two likely restores them without washing. Winter coats go years without dry-cleaning if aired properly. 6. Keep shoes on a shoe rackUsing a shoe rack keeps the smells of the city near the door instead of in the wardrobe, and helps keep the floor clean. 7. Shower in the eveningBy showering in the evening the bed sheets can go 3 or even 4 weeks before feeling like they need a change. Showering in the morning, expect to wash the sheets every week. Bonus tip: Down JacketsDown jackets can be washed once a year after the cold season, with down detergent on a woolen cycle, then dried flat on an airing rack. To remove clumps from the down, follow with a 20-minute delicate-cycle tumble dry with tennis balls. ConclusionWhat do you think of these ways of making clothes last longer? Less wear from washing, more wears between washes. If you disagree or have more tips, comment below. P.S. check out my my advice for removing smoke smells from waterproof jackets&amp;nbsp;and decluttering your home with the outbox method.</itunes:summary><itunes:keywords>lifehacks</itunes:keywords></item><item><title>The keys to doing long-form Narrative Improv</title><link>http://blog.grahampoulter.com/2017/11/tips-for-narrative-improv.html</link><category>books</category><category>skills</category><author>noreply@blogger.com (Graham Poulter)</author><pubDate>Wed, 22 Nov 2017 21:49:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-22557003.post-8847157183547342770</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-jhLiK0cQtx4/WxzjbAYCh3I/AAAAAAAC9ms/2RQ0uypXGkANvKxGqWMU5T8rsJwjYMgBQCLcBGAs/s1600/a3e4ea_dccece11911149d8a7bb7b3032b1c05e_mv2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="&amp;quot;Do it Now&amp;quot; book cover" border="0" data-original-height="766" data-original-width="460" src="https://1.bp.blogspot.com/-jhLiK0cQtx4/WxzjbAYCh3I/AAAAAAAC9ms/2RQ0uypXGkANvKxGqWMU5T8rsJwjYMgBQCLcBGAs/s1600/a3e4ea_dccece11911149d8a7bb7b3032b1c05e_mv2.png" title="The keys to doing long-form narrative improv" /&gt;&lt;/a&gt;&lt;/div&gt;
Here are some key ingredients for full-length improvised plays known as Narrative Improv. Providing tips on story structure, normalcy, the protagonist, consequences and clarity. [4 minutes]&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
In Narrative Improv the group creates a full-length play with a more-or-less coherent story that runs all the way through from "once upon a time" through to the "happily ever after" (or not so happily). It's a flexible form that stands in contrast to both highly structured forms like the Armando or Harold, and to the unstructured "montage" improv of possibly-connected scenes with once-off characters.&lt;br /&gt;
&lt;br /&gt;
The following tips are summarised from the excellent little book,&amp;nbsp;&lt;i&gt;&lt;a href="https://www.pgraph.com/do-it-now"&gt;Do It Now: Essays on Narrative Improv&lt;/a&gt;&amp;nbsp;&lt;/i&gt;by&amp;nbsp;&lt;a href="https://www.pgraph.com/"&gt;Parallelogramophonograph&lt;/a&gt;&amp;nbsp;("Pgraph" for short), especially the "What comes next?" conclusion on page 73:&lt;br /&gt;
&lt;h3&gt;
1. Build the story spine&lt;/h3&gt;
The story spine is a generic story structure: "Once Upon A Time ... And Every Day ... Until One Day ... And Because Of That ... And Because Of That (repeat to taste) ... Until Finally ... And Ever Since Then". Virtually any plot can be arranged or rearranged into a story spine form, and you can practice making story spines in a group exercise where each person, in turn, adds an element to the story.&lt;br /&gt;
&lt;h3&gt;
2. Invest in normalcy&lt;/h3&gt;
It's almost impossible to spend too much time on the "once upon a time ... and every day" part of the show where everything that happens is stuff that always happens. Even if two characters start in a sword fight, that's just something they do &lt;i&gt;every day&lt;/i&gt;. Normalcy builds the world, the characters, the relationships. Take up multiple scenes, a large fraction of your show, just showing different parts of the everyday world of these people. If someone brings in the plot too soon just act like their proposed plot is something that happens all the time. One day, when the "One Day" finally happens, you will have loads of material to work with!&lt;br /&gt;
&lt;h3&gt;
3. Identify the protagonist&lt;/h3&gt;
Around the "Until One Day" point, different characters will be making offers of goals and desires. As a group, you gradually home in with a "spotlight" on different characters to settle on one with a strong offer, who will become the protagonist for the rest of the story. Give the protagonist a strong and simple desire - even if it's just to get their rug back (it really tied the room together!). Then the rest of the story becomes scenes that either help or hurt the protagonist in pursuit of their goal.&lt;br /&gt;
&lt;h3&gt;
4. Make scenes have clear consequences&lt;/h3&gt;
More than "making bold choices", by giving actions and scenes clear, strong consequences, the "And Because Of That" will come naturally, and you get a feel for where the story is going. This frees you from "oh no, where are we going?" scrambling for the next step, giving you space to have playful moments in your scenes.&lt;br /&gt;
&lt;h3&gt;
5. Be clunky but clear&lt;/h3&gt;
Be overt and clear about the details of scenes and relationships, particularly early in your group's development. It's the opposite of being vague and hoping that the others figure out what you're getting at or fill in the gaps. "My dear brother Kevin, what a dank cave this is!" comes out clunky but makes the relationship and location clear! Subtlety will develop over time.&lt;br /&gt;
&lt;h3&gt;
6. Use a range of acting styles and tones&lt;/h3&gt;
Deliberately try out new genres, and new acting styles from everyday realism, to stage realism, to over-the-top stylized acting. Try out new character tropes from movies and theatre. These deepen your stories and make your shows distinct, taking your improv to new places.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Conclusion: &lt;/i&gt;PGraph advise us to "play, practice, enjoy getting it horribly wrong - that's how you learn! -and revel in getting it right." I hope this taste inspires you to get the book or take the class on Narrative Improv!&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;P.S. I bought and read "Do It Now" as preparation for a 6-week class on Narrative Improv facilitated by Neil Curran of &lt;a href="http://www.lowerthetone.com/"&gt;Lower The Tone&lt;/a&gt;, and have no affiliation with Parallelogramophonograph.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Do you have some advice to share on doing Narrative Improv? Comment below!&lt;/i&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-jhLiK0cQtx4/WxzjbAYCh3I/AAAAAAAC9ms/2RQ0uypXGkANvKxGqWMU5T8rsJwjYMgBQCLcBGAs/s72-c/a3e4ea_dccece11911149d8a7bb7b3032b1c05e_mv2.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><georss:featurename xmlns:georss="http://www.georss.org/georss">Dublin, Ireland</georss:featurename><georss:point xmlns:georss="http://www.georss.org/georss">53.3498053 -6.2603096999999934</georss:point><georss:box xmlns:georss="http://www.georss.org/georss">53.0463133 -6.9057566999999933 53.6532973 -5.6148626999999935</georss:box></item><item><title>Declutter your home with the Outbox Method</title><link>http://blog.grahampoulter.com/2013/03/cutting-down-on-clutter-with-outbox.html</link><category>lifehacks</category><author>noreply@blogger.com (Graham Poulter)</author><pubDate>Sun, 31 Mar 2013 21:58:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-22557003.post-5074078260820041317</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://1.bp.blogspot.com/-iBYUBy1h_eg/WzAe4r8PaYI/AAAAAAAC-vc/h_Kbi0Eck9oWiT7ZQJlpoDuTQwO-an_8wCLcBGAs/s1600/declutter-header.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="(declutter your home)" border="0" data-original-height="400" data-original-width="712" src="https://1.bp.blogspot.com/-iBYUBy1h_eg/WzAe4r8PaYI/AAAAAAAC-vc/h_Kbi0Eck9oWiT7ZQJlpoDuTQwO-an_8wCLcBGAs/s1600/declutter-header.jpg" title="" /&gt;&lt;/a&gt;&lt;/div&gt;Here are some easy ways to reduce the clutter at home by means of an "Outbox". It's a box for things that you think you might not need, that you then periodically empty. [4 minutes]&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;h2&gt;Why we gather clutter&lt;/h2&gt;Homo Sapiens descend from Homo Habilis, the tool user. One of our adaptations was to become emotionally attached to our possessions because what few tools we had were critical to our survival. We feel loss and sadness when letting go of something because we think of the sunk costs acquiring it, that we might need it, that we aspire to use it, or that we have memories attached to it. In this consumerist age, that old adaptation leads to a lot of clutter now that possessions are cheap and plentiful.&lt;br /&gt;
&lt;br /&gt;
"The things you own come to own you" ... overabundance of possessions creates a burden, a psychological and physical weight, a waste of time and energy tidying up and packing things away and looking for something specific amongst all the stuff you never use. There's also the unsightliness of the clutter that lies about outside the storage areas.&lt;br /&gt;
&lt;h2&gt;Drastic decluttering&lt;/h2&gt;The drastic way to declutter is to move house and limit what you can bring with you. When I moved from Cape Town to Ireland, I limited myself to the 150k airfreight allowance and 30kg checked luggage. I ended up using only 100kg of the airfreight. The furnished apartment started out pretty bare, but after discovering Amazon I quickly accumulated all sorts of gadgets and furnishings that seemed fun or useful. But, if you move every few years, you will find that a rolling stone gathers no moss.&lt;br /&gt;
&lt;br /&gt;
However, moving is very stressful, and letting go of most of your things at once is also stressful. We need something less drastic, a low-stress decluttering habit to make part of your life that also makes you think twice before acquiring something likely to turn into clutter.&lt;br /&gt;
&lt;h2&gt;The Outbox Method&lt;/h2&gt;The insight behind the Outbox is that it's much less stressful to let go of things gradually, and that it can become a habit. When I come across something and think "I haven't used this in years" or "Am I&amp;nbsp;&lt;i&gt;really&lt;/i&gt;&amp;nbsp;going to get round to using this?" - it goes in the outbox. Sometimes I go through a cupboard or box to toss things into the outbox. It's psychologically easier because in the The Outbox nothing is gone just moved - you can always take it back if you find you need it! But, once the Outbox is full it's it time to close your eyes and haul the whole thing to a charity shop, perhaps sending some things to recycling and putting others up for sale.&lt;br /&gt;
&lt;br /&gt;
For 4 months preceding the move to Ireland I took a box to charity every 2 weeks or so.&amp;nbsp; After moving here I've probably filled an outbox every 3 months on average. To think I'd have 20 more boxes of stuff in a one-bedroom apartment now if I hadn't.&lt;br /&gt;
&lt;h2&gt;Acquiring less clutter&lt;/h2&gt;The outbox also helps one to avoid acquiring clutter in two ways. Firstly, when faced with a purchase decision, I find myself asking "Is this just going to end up in the Outbox in 2 years time and take up valuable closet space meanwhile?" ... if I'm not confident of using it regularly, I don't buy. Helps me avoid the sunk costs.&lt;br /&gt;
&lt;br /&gt;
Secondly, with clothing especially, with the Outbox I apply a "one in, one out" rule. Are those jeans getting tattered, but I can't do without a pair of casual jeans? As soon as I buy the new pair, the old ones go in the Outbox. I just have to buy that great shirt? Guess what, my worst or most-worn shirt is going in the Outbox.&lt;br /&gt;
&lt;h2&gt;Dressing better without going shopping&lt;/h2&gt;&lt;div style="clear: right; float: right;"&gt;&lt;a data-pin-do="embedPin" data-pin-terse="true" href="https://www.pinterest.com/pin/118149190210240327/"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;Applying the Outbox to my wardrobe, I've discovered that after giving away about half my clothes I don't suddenly find myself with nothing to wear. Instead, I find myself wearing &lt;i&gt;better clothes &lt;/i&gt;on average - because the bad purchases and worn-out clothes are no longer in rotation! It also helps to get a wardrobe consultant to put together a set of clothes that almost all work well together, so it's less of a gamble as to whether you pull a decent combination out of the closet. You might also check out my advice on &lt;a href="http://blog.grahampoulter.com/2018/05/7-ways-to-make-clothes-last.html"&gt;extending the life of your clothes&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
P.S. After you declutter your home, how about decluttering your to-do list with some &lt;a href="http://blog.grahampoulter.com/2012/09/summary-of-time-management-for-system.html"&gt;sysadmin's advice for time management&lt;/a&gt;, or maybe &lt;a href="http://blog.grahampoulter.com/2018/06/spring-clean-organize-blog.html"&gt;declutter your blog&lt;/a&gt;?&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Do you have some decluttering tips to share? Comment below!&lt;/i&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-iBYUBy1h_eg/WzAe4r8PaYI/AAAAAAAC-vc/h_Kbi0Eck9oWiT7ZQJlpoDuTQwO-an_8wCLcBGAs/s72-c/declutter-header.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>The Blue Zones book summary: lessons for living longer</title><link>http://blog.grahampoulter.com/2012/10/review-and-summary-of-blue-zones.html</link><category>books</category><category>lifehacks</category><author>noreply@blogger.com (Graham Poulter)</author><pubDate>Sun, 21 Oct 2012 15:58:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-22557003.post-1705315374799808997</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-ZDo9tuJG5D0/Wxlf2U0lG-I/AAAAAAAC9Cg/Br_cavVVc3ou3sFtX7OraLw1JrC9Cd0DwCLcBGAs/s1600/Blue_Zones_cvr2nd_copy.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Blue Zones book cover" border="0" data-original-height="1024" data-original-width="683" src="https://1.bp.blogspot.com/-ZDo9tuJG5D0/Wxlf2U0lG-I/AAAAAAAC9Cg/Br_cavVVc3ou3sFtX7OraLw1JrC9Cd0DwCLcBGAs/s1600/Blue_Zones_cvr2nd_copy.jpg" title="Review and summary of The Blue Zones: lessons for living longer" /&gt;&lt;/a&gt;&lt;/div&gt;
My review and summary of the &lt;i&gt;The Blue Zones: Lessons for living longer from the people who've lived the longest.&lt;/i&gt; The best advice is having strong relationships and purpose in life. [5 minutes]&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
There's now even a whole site &lt;a href="https://www.bluezones.com/"&gt;www.bluezones.com&lt;/a&gt;. Note that I bought the book in-person at a clearance sale, and have no affiliation with Dan Buettner or the Blue Zones.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Premise&lt;/b&gt;: The book's premise is that some places have the highest rates of centenarians, so let's go there and see what's notable about their ways of living. The book has a smattering of input from scientists but is otherwise personal observations, anecdotes from centenarians, and travelogue of Buettner's "Blue Zone Quest".&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Outliers&lt;/b&gt;: This approach of look at the outliers, "the most successful" is ever-popular in the get-rich-quick genre, but yields mostly spurious correlations. Dan observed that some centenarians are fond of an evening glass of red wine, or port, or Saki. That may be a hypothesis worth investigating but it's a massive jump to conclude that a nightcap will add years to your life. Life is too short to take up everything that seems notable about their behavior without solid evidence for cause-and-effect.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The Zones&lt;/b&gt;: Buettner's four "Blue Zones" are "Okinawa, Japan; Sardinia, Italy; Nicoya, Costa Rica; Ikaria, Greece; and among the Seventh Day Adventists in Loma Linda, California" - communities which have well-above-average number of centenarians per capita (see &lt;a href="https://en.wikipedia.org/wiki/Blue_Zone"&gt;Wikipedia on Blue Zones&lt;/a&gt; for more fun places to live...).&lt;br /&gt;
&lt;br /&gt;
I found the most useful points in the first chapter:&lt;br /&gt;
&lt;h2&gt;
Insights on ageing&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Genetic factors&lt;/b&gt; explain only about 25% of variation in lifespan in twin studies.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Risk of dying &lt;/b&gt;is how gerontologists define ageing. Increasing age is the overarching factor in the continuous risk of dying, but it's not the sole determiner. &amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Signs of ageing are not universal&lt;/b&gt;&amp;nbsp;becoming farsighted, grey hair and loss of hair, loss of collagen in skin - some old people lack one or more of these features.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Bodies are like cars&lt;/b&gt; built for 200,000km. A few will go to 300,000km or more, but all deteriorate even with the best upkeep. With deterioration comes frailty: when you hit a bump, you are less capable of bouncing back. At some point there's no bounce-back, and then you die.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Your chances depend on our age&lt;/b&gt;: An 80-year-old has a much better chance of living to 100 is much than a newborn. Looking backwards, most centenarians were quite healthy at 80.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Improving your chances&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Magic bullets&lt;/b&gt;: There is no pill that universally "extends life".&amp;nbsp;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Anti-oxidants? Humbug: anti-oxidants are better known as preservatives, you'll get more of them from packaged junk food.&lt;/li&gt;
&lt;li&gt;Vitamins? Get your basic requirements, which is easily attainable by eating fruit and veg. Any more does not help, and large quantities may cause problems.&lt;/li&gt;
&lt;li&gt;Hormones? Simply dangerous. Forget about it.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;Diet&lt;/b&gt;: reasonable diet, looking for moderation in calories, and balancing the calories across carbohydrates, fats, proteins. Taking in what you really need.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Exercise&lt;/b&gt;: prefer changes to your lifestyle, over exercise for the sake of exercising. Bike or walk instead of driving. &amp;nbsp;Exercise built into your lifestyle has better chances of being sustained.&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Swimming&lt;/b&gt; is a great cardiovascular exercise. For bones, exercises that use gravity (like walking) are better. &lt;/li&gt;
&lt;li&gt;&lt;b&gt;Marathon runners&lt;/b&gt; have great cardiovascular systems, but their joints give out.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Walking&lt;/b&gt; helps muscle and bone, without the joint pounding of running.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;Living more "good years"&lt;/b&gt;: who wants to live an extra 2 years on life support? The real question is: how can you delay the onset of disability? Aim for "successful aging" rather than mere lifespan.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Things that may help with living longer&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Being socially connected&lt;/b&gt;. If nothing else, it makes life more worthwhile.&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;But it's very individual. For example, you can't say that "family support" is universally good: some people are very anxious and upset about their families.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;Doing something worthwhile&lt;/b&gt;. That you find interesting and worthwhile. If your work is driven by internal passion, rather than externalities like money, then it's less stressful.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Get rid of anti-aging quackery&lt;/b&gt;. It costs you money, and often harms you.&lt;/li&gt;
&lt;/ul&gt;
I also found these in the last chapter, picking out commonalities from the rest of the book:&lt;br /&gt;
&lt;h2&gt;
Buettner's 9 lessons for living longer&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Move Naturally&lt;/b&gt;: incorporate exercise into your lifestyle.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Hara Haichu Bi&lt;/b&gt;: Confucian reminder to stop eating when you are 80% full. Combined with eating the right foods, it keeps obesity away. It's the difference between stopping when you are full, and stopping when you are no longer hungry. Weight gain is not from stuffing yourself, rather it's from eating a bit more than you need every day. Prefer foods with lower caloric density.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Prefer plant foods&lt;/b&gt;. A mostly plant-based diet accented with meat. We do need protein at each meal, but not much. Also, eat legumes.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Wine at 5??&lt;/b&gt;&amp;nbsp; This&amp;nbsp;"glass of red in the evening" advice is not on a solid evidence basis. &amp;nbsp;When it comes to health benefits of alcoholic beverages, it's all swings and roundabouts.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Sense of purpose&lt;/b&gt;: live longer by having something worth getting up for in the morning. &amp;nbsp;Take up something new, so you don't stagnate.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Have down-time&lt;/b&gt;&lt;i&gt;: &lt;/i&gt;regular times to slow down, unwind, de-stress. &amp;nbsp;"Life is short, don't run so fast you miss it"&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Belong to a community&lt;/b&gt;: Buettner lists religious communities, but presumably communities built around common interests also work.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Loved ones first&lt;/b&gt;&lt;i&gt;: &lt;/i&gt;centenarians typically live in multi-generational homes where younger generations care for the older ones, with strict "honor the elders" cultural norms. &amp;nbsp;That's a rarity now in Western societies, and fewer healthy years for the elders is the price.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Being around the right people&lt;/b&gt;&lt;i&gt;: &lt;/i&gt;the Blue Zones have tight-knit communities and social circles that promote healthy lifestyles. Centenarians also tend to be likeable: "there was not one grump among them".&lt;/li&gt;
&lt;/ol&gt;
P.S. do you want to use your longer life efficiently? Check out these &lt;a href="http://blog.grahampoulter.com/2012/09/summary-of-time-management-for-system.html"&gt;tips for time management from a system administrator&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Do you think Buettner is onto something, or not? Any living longer tips or disagree with the above? Comment below!&lt;/i&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-ZDo9tuJG5D0/Wxlf2U0lG-I/AAAAAAAC9Cg/Br_cavVVc3ou3sFtX7OraLw1JrC9Cd0DwCLcBGAs/s72-c/Blue_Zones_cvr2nd_copy.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>A summary of Time Management for System Administrators</title><link>http://blog.grahampoulter.com/2012/09/summary-of-time-management-for-system.html</link><category>books</category><category>lifehacks</category><category>skills</category><author>noreply@blogger.com (Graham Poulter)</author><pubDate>Sat, 1 Sep 2012 12:55:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-22557003.post-422004300665643126</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-mCE-2FT_dKI/WxztDwFmBaI/AAAAAAAC9m8/gSoEhXHPpfITavxU7YaIJKwsLx7Ky4aJwCLcBGAs/s1600/time-management-for-system-admins.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="A summary of &amp;quot;Time Management for System Administrators&amp;quot;" border="0" data-original-height="1420" data-original-width="944" src="https://1.bp.blogspot.com/-mCE-2FT_dKI/WxztDwFmBaI/AAAAAAAC9m8/gSoEhXHPpfITavxU7YaIJKwsLx7Ky4aJwCLcBGAs/s1600/time-management-for-system-admins.jpg" title="" /&gt;&lt;/a&gt;&lt;/div&gt;
My summary of the book &lt;i&gt;Time Management for System Administrators&lt;/i&gt;. Good advice for people who otherwise get interrupted a lot to make time for project work. Works for SRE and DevOps too. [5 minutes]&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
I bought and read &lt;i&gt;&lt;a href="http://shop.oreilly.com/product/9780596007836.do"&gt;Time Management for System Administrators&lt;/a&gt;&lt;/i&gt; by Thomas A. Limoncelli because I've ended up running a lot of systems at work. Thomas has a blog called&amp;nbsp;&lt;a class="vt-p" href="http://everythingsysadmin.com/" rel="nofollow"&gt;Everything Sysadmin&lt;/a&gt;. Note: I have no affiliation with Thomas Limoncelli or Everything Sysadmin.&lt;br /&gt;
&lt;br /&gt;
Most of these points are out of the first half of the book, which I found more relevant than the second half. I've grouped the points by principle instead of by chapter:&lt;br /&gt;
&lt;h2&gt;
The Five Principles&lt;/h2&gt;
The book outlines five main principles expressed with computer analogies:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Minimise context switches / deflect interruptions&lt;/b&gt;: deflect or efficiently process to reduce context switching costs.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Lock critical sections / dedicate project time&lt;/b&gt;: to shield yourself from distractions.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Conserve CPU / develop routines&lt;/b&gt;: caching decisions by cultivating routines, "Think once, reuse the result many times", so you can allocate more of your thought-cycles to projects.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Conserve memory / write down tasks&lt;/b&gt;: if working memory = CPU cache,&amp;nbsp; short-term memory = RAM, long-term memory&amp;nbsp;= failing hard disk... then digital task-management is an SSD. Free up memory by offloading the to-do's.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Prioritise like QoS &lt;/b&gt;: when flooded with too many packets, drop the low-priority packets from the&amp;nbsp; queue.&lt;/li&gt;
&lt;/ol&gt;
Let's expand on each of the principles:&lt;br /&gt;
&lt;h2&gt;
1. Minimize context switches&lt;/h2&gt;
&lt;b&gt;&lt;i&gt;Deflect Interruptions&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
Interruptions take time for context switching, time to deal with it, another context switch back, and any time to fix mistakes you made due to broken concentration.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Dedicated Interrupt Handler&lt;/b&gt;: have one person on the team on-call for interruptions. Perhaps same person on-call for the pages.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Interrupt Routing&lt;/b&gt;: three main responses you can make while interruptor is present, then say "thank you" and the interaction is over:&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Delegate &lt;/b&gt;the task to a specific person.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Record&lt;/b&gt; the task in your ticket system for later.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Do&lt;/b&gt; the task there and then, as they watch.&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
Worst case is for for the interruptor to leave you there as you go on with their task, unfinished.&lt;br /&gt;
&lt;h2&gt;
2. Lock critical sections&lt;/h2&gt;
&lt;b&gt;&lt;i&gt;Dedicate project time&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
Set aside large time blocks for large projects. Do not use them for varied unrelated tasks - instead squeeze those in the smaller gaps.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Peak Brain Power&lt;/b&gt; hours for Tough Projects. Often the first hours, before the office is full and people are interrupting (or late at night, if you lack a social life).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Email after lunch&lt;/b&gt; because first hour is totally wasted if you use it to catch up on mail or news. In any case people can wait, important stuff will be messaged.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Remove distractions&lt;/b&gt; blocking IM, email, feeds, notifications, distracting sites and apps.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Deflect interruptions&lt;/b&gt; using the "Delegate, Record or Do" rule.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
3. Conserve CPU&lt;/h2&gt;
&lt;b&gt;&lt;i&gt;Develop routines&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
Routines save memory because they are in long-term habits, and "CPU" because they are automatic not effortful. Trigger routines more reliably by finding "if this, then do that" rules to attach them to events or actions you already do daily. Some good "think once do many" habits:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Daily task list&lt;/b&gt;.. when arriving at desk.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Interrupts and emails&lt;/b&gt;... schedule for last hour or half hour before lunch.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Manager meeting&lt;/b&gt; ... schedule weekly.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Floor walk around&lt;/b&gt;... schedule weekly.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;News catch-up&lt;/b&gt;... schedule last hour to catch up news.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
4. Conserve memory&lt;/h2&gt;
&lt;i&gt;&lt;b&gt;Write down tasks&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
Bad systems include the Pile of Post-it Notes, and the Giant Ever-Growing Todo List of Doom. Limoncelli presents a "Cycle" system much like a Bullet Journal, with a list for each day of the year. You can feel good after completing the just a day's tasks. The list includes both work and personal tasks.&lt;br /&gt;
&lt;br /&gt;
Limoncelli stresses having one task system, but I find it infeasible: I have multiple apps providing lists of tasks. I end up repeat the most important ones in my daily on-paper list, and the rest peruse in interrutps time.&lt;br /&gt;
&lt;br /&gt;
If the queue for the day is too long try punting low-priority tasks to tomorrow, splitting up large tasks, reducing the scope of large tasks, asking the boss for priorities, or delegating some tasks.&lt;br /&gt;
&lt;h2&gt;
5. Prioritise like QoS&lt;/h2&gt;
Assign priorities and drop lowest priority tasks when overloaded. Some ways to prioritise:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Impact&lt;/b&gt;: first rank tasks by the Return on Investment&lt;b&gt;&amp;nbsp;&lt;/b&gt;for your time and effort.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Latency:&amp;nbsp;&lt;/b&gt;if you have to wait for response, do your action as early as possible.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Relationship&lt;/b&gt;: direct requests from the boss get a special priority to skip the queue.&lt;/li&gt;
&lt;/ul&gt;
Thomas suggests managing your boss by (1) sharing your career goals, (2) delegate upwards only when it requires the boss's authority, (3) understanding the boss's goals and help accomplish them.&lt;br /&gt;
&lt;h2&gt;
Miscellanous Advice&lt;/h2&gt;
I also picked out a few interesting miscellany:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Fall asleep like a PC&lt;/b&gt;: dump RAM to disk then hibernate, by writing down your tasks for tomorrow.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Don't trust your brain:&amp;nbsp;&lt;/b&gt;if someone asks you verbally to do something, record it or ask them to email / IM / file a ticket. Don't just say "yes" and forget.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Don't work late: &lt;/b&gt;most people have 4 or 5 productive hours in them each day, and the rest is spinning your wheels.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Long vacations&lt;/b&gt;: because weekends are not enough! You need to be away long enough to actually miss some work. No computer no phone.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Quick email actions&lt;/b&gt;: Filter, Archive Without Reading, Read and Archive, Read and File, Read and Reply, Read And Delegate, Do It Now And Delete. Anything you can't do now, add to task management... because email sucks at everything.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Time wasters&lt;/b&gt; are anything with low reward for time spent.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
P.S. now that you're making the most of your time, check out some advice on&amp;nbsp;&lt;a href="http://blog.grahampoulter.com/2012/10/review-and-summary-of-blue-zones.html"&gt;increasing your chances of living longer&lt;/a&gt;.&lt;/div&gt;
&lt;br /&gt;
&lt;i&gt;Do you have any advice for time management when faced with interruptions? Comment below!&lt;/i&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-mCE-2FT_dKI/WxztDwFmBaI/AAAAAAAC9m8/gSoEhXHPpfITavxU7YaIJKwsLx7Ky4aJwCLcBGAs/s72-c/time-management-for-system-admins.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>A comparison of file synchronisation software</title><link>http://blog.grahampoulter.com/2012/08/comparison-of-file-sync-programs.html</link><category>reviews</category><category>technical</category><author>noreply@blogger.com (Graham Poulter)</author><pubDate>Sun, 12 Aug 2012 12:52:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-22557003.post-4109190622512029954</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://2.bp.blogspot.com/-N8DxZqSq7Sg/Ww3OZu4EVAI/AAAAAAAC7wk/3HaQ8Qu0WMEtouswkvMgRYXZZOMHukl9ACLcBGAs/s1600/FreeFileSync.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="A pair of green arrows suggesting a circle" border="0" data-original-height="512" data-original-width="512" height="400" src="https://2.bp.blogspot.com/-N8DxZqSq7Sg/Ww3OZu4EVAI/AAAAAAAC7wk/3HaQ8Qu0WMEtouswkvMgRYXZZOMHukl9ACLcBGAs/s400/FreeFileSync.png" title="The universal symbol for two-way synchronization" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
Presenting a comparison a wide range of free software for local file synchronization. In my case, for synchronization between a PC and an external hard drive. [5 minutes]&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.blogger.com/blogger.g?blogID=22557003#freefilesync"&gt;FreeFileSync&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.blogger.com/blogger.g?blogID=22557003#synctoy"&gt;SyncToy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.blogger.com/blogger.g?blogID=22557003#createsynchronicity"&gt;Create Synchronicity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.blogger.com/blogger.g?blogID=22557003#cwrsync"&gt;cwRsync&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.blogger.com/blogger.g?blogID=22557003#winrobocopy"&gt;WinRoboCopy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.blogger.com/blogger.g?blogID=22557003#unison"&gt;Unison&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.blogger.com/blogger.g?blogID=22557003#dirsyncpro"&gt;DirSyncPro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.blogger.com/blogger.g?blogID=22557003#synkron"&gt;Synkron&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style="font-family: &amp;quot;tinos&amp;quot;;"&gt;I am not affiliated with any of the above software. I was hunting for a good file sync program for myself, and am now sharing my results.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Naturally if you have fast unlimited internet and always-connected devices and can afford DropBox, Google Drive or OneDrive then go ahead and use cloud storage. Those are some big "ifs" for South Africa in late 2012, where external USB drives remain the primary mode of moving gigabytes of data around. So, I tried a bunch of different local synchronizing tools to find one I liked best.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Spoiler Alert: I think &lt;a class="vt-p" href="http://sourceforge.net/projects/freefilesync/"&gt;FreeFileSync&lt;/a&gt; is the best of the bunch, especially for two-way sync.&lt;/b&gt;&lt;br /&gt;
&lt;h2&gt;
File Synchronization Sofware&lt;/h2&gt;
&lt;h3&gt;
&lt;a class="vt-p" href="http://sourceforge.net/projects/freefilesync/"&gt;FreeFileSync&lt;/a&gt;&lt;/h3&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;a href="https://www.freefilesync.org/images/screenshots/Windows.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="213" src="https://www.freefilesync.org/images/screenshots/Windows.png" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;
FreeFileSync does 1-way mirror and 2-way sync. For 2-way sync it builds a hidden ".sync.ffs_db" &lt;br /&gt;
database in each root that enables it to speed up sync when files have been renamed, and determine in which direction to sync new or deleted files. The UI makes it easy to specify entire subfolders to sync to the right or left or exclude temporarily. FreeFileSync is a C++ app cross-platform for Win, Mac and Linux. It loads huge directories (100,000+ files) easily.&lt;br /&gt;
&lt;br /&gt;
Tip: to sync a tree of symlinks, set "Symbolic Link Handling" to "Follow" under the "Compare" gear-icon. If part of the tree has complex changes coming from both sides, it's worth using the "temp exclude" feature to focus down to the tricky part and tweak the direction choices.&lt;br /&gt;
&lt;br /&gt;
Cons: No biggies, but there's a learning curve for discovering the features. FFS is not &lt;i&gt;fully&lt;/i&gt; automatic - it's worth checking the sync preview in case of conflicting changes on both sides.&lt;br /&gt;
&lt;a href="https://www.blogger.com/null" name="synctoy"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;
&lt;a class="vt-p" href="http://www.microsoft.com/en-us/download/details.aspx?id=15155"&gt;SyncToy&lt;/a&gt;&lt;/h3&gt;
&lt;a class="vt-p" href="http://1.bp.blogspot.com/-0hmsaJSihOQ/UCd8JMwkxMI/AAAAAAAAF8c/Q6I8VZJ242o/s1600/synctoy.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="151" src="https://1.bp.blogspot.com/-0hmsaJSihOQ/UCd8JMwkxMI/AAAAAAAAF8c/Q6I8VZJ242o/s200/synctoy.png" width="200" /&gt;&lt;/a&gt;&lt;br /&gt;
SyncToy is a popular older offering, fast and simple to use. It creates a SyncToy_{GUID}.dat database file in the root of each folder.&lt;br /&gt;
&lt;br /&gt;
Cons: SyncToy throws errors on junctions and directory links. It's Windows only and was last updated in 2009. The SyncToy_*.dat files in the sync roots are annoying to look at. 2-way sync works but the 1-way sync "Echo mode" &lt;a class="vt-p" href="http://popcorn.cx/blog/2010/02/synctoy-is-dangerous-for-backups/"&gt;does not restore files that were deleted on the destination&lt;/a&gt; so I can't recommend it for more than simple 2-way sync situations.&lt;br /&gt;
&lt;a href="https://www.blogger.com/null" name="createsynchronicity"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;
&lt;a class="vt-p" href="http://synchronicity.sourceforge.net/"&gt;Create Synchronicity&lt;/a&gt;&lt;/h3&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a class="vt-p" href="http://4.bp.blogspot.com/-wfPtt-6NCAs/UCf7JGG4fHI/AAAAAAAAF9E/AWrQrvSBaEw/s1600/synchronicity.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="https://4.bp.blogspot.com/-wfPtt-6NCAs/UCf7JGG4fHI/AAAAAAAAF9E/AWrQrvSBaEw/s200/synchronicity.png" width="170" /&gt;&lt;/a&gt;&lt;/div&gt;
Create Synchronicity is a tiny VB.Net app (230kb) with a simple user interface. It handles symlinks and junctions and compares up to 4000 files per second.&lt;br /&gt;
&lt;br /&gt;
Cons: excluding files and folders gets finicky because excludes are defined in a single text box, and regex exclusions didn't work for me. Although it "should" run on Mono, it crashes with System.TypeLoadException on Linux.&lt;br /&gt;
&lt;a href="https://www.blogger.com/null" name="cwrsync"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;
&lt;a class="vt-p" href="http://www.itefix.no/cwrsync/"&gt;cwRsync&lt;/a&gt; and &lt;a class="vt-p" href="http://www.opbyte.it/grsync/"&gt;Grsync&lt;/a&gt;&lt;/h3&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a class="vt-p" href="http://4.bp.blogspot.com/-Y_Z8V8u91CE/UCf7IgRb6fI/AAAAAAAAF88/SciCAR-JtmE/s1600/grsync-1.0.0.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="https://4.bp.blogspot.com/-Y_Z8V8u91CE/UCf7IgRb6fI/AAAAAAAAF88/SciCAR-JtmE/s200/grsync-1.0.0.png" width="196" /&gt;&lt;/a&gt;&lt;/div&gt;
Having used &lt;a class="vt-p" href="http://en.wikipedia.org/wiki/Rsync"&gt;rsync&lt;/a&gt; on Linux for many years, I have naturally looked to &lt;a class="vt-p" href="http://www.opbyte.it/grsync/"&gt;GRsync&lt;/a&gt; and &lt;a class="vt-p" href="http://www.itefix.no/cwrsync/"&gt;cwRsync &lt;/a&gt;on Windows to do my one-way backups.&lt;br /&gt;
&lt;br /&gt;
Cons: cwRsync costs money past version 4.0.3, which has no GUI. GRsync has a GUI. They both use Cygwin posix layer, and I find them very slow on Windows compared to native Windows apps. It gives a "cannot traverse non-regular file" error for Windows junctions and directory symlinks. You can sort-of do 2-way sync with rsync by running it twice but there's no easy way to pick and choose which side to favour in complex cases, so don't do it. The ".rsync-filter" files get unwieldly if you sync different subsets to different destinations. For NTFS destination they write strange security settings on the files that prevent other Windows installations from easily accessing the files.&lt;br /&gt;
&lt;a href="https://www.blogger.com/null" name="winrobocopy"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;
&lt;a class="vt-p" href="http://www.upway2late.com/projects/winrobocopy"&gt;WinRoboCopy&lt;/a&gt;&lt;/h3&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a class="vt-p" href="http://4.bp.blogspot.com/-vr-W9-BiDs8/UCf7LjnylzI/AAAAAAAAF9U/sGQGNB8S_gU/s1600/winrobocopy.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="https://4.bp.blogspot.com/-vr-W9-BiDs8/UCf7LjnylzI/AAAAAAAAF9U/sGQGNB8S_gU/s200/winrobocopy.png" width="182" /&gt;&lt;/a&gt;&lt;/div&gt;
WinRoboCopy is a GUI frontend to &lt;a class="vt-p" href="http://technet.microsoft.com/en-us/library/cc733145(v=ws.10).aspx"&gt;robocopy&lt;/a&gt;, which is the closest Windows has to rsync as a built-in command.  Unlike cwRsync, it is robust and optimised for Windows directory links, junctions, encrypted data, remote shares and scheduled tasks. It had the fastest transfer rates: 57MB/s over USB3.&lt;br /&gt;
&lt;br /&gt;
Cons: Like rsync it's designed for 1-way sync only.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://www.blogger.com/null" name="unison"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;
&lt;a class="vt-p" href="http://www.cis.upenn.edu/~bcpierce/unison/"&gt;Unison&lt;/a&gt;&lt;/h3&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a class="vt-p" href="http://4.bp.blogspot.com/-1QeYYK68RMo/UCd5UkfbGFI/AAAAAAAAF8M/qX8QA9CIhj8/s1600/UnisonScreenshot1.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="149" src="https://4.bp.blogspot.com/-1QeYYK68RMo/UCd5UkfbGFI/AAAAAAAAF8M/qX8QA9CIhj8/s320/UnisonScreenshot1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
Unison provides reliable 2-way sync, maintaining databases for each root with file hashes and metadata needed to detect renames accurately. It's an OCaml app with GTK UI.&lt;br /&gt;
&lt;br /&gt;
Cons: due to hashing it's slow like molasses, only compares a few files per second, and it's several times slower running on Windows than on Linux. It's ok up to a few hundred megs of data. Tricky to run on Windows, as you have to install GTK+ separately.&lt;br /&gt;
&lt;a href="https://www.blogger.com/null" name="dirsyncpro"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;
&lt;a class="vt-p" href="http://www.dirsyncpro.org/"&gt;DirSyncPro&lt;/a&gt;&lt;/h3&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a class="vt-p" href="http://2.bp.blogspot.com/-SnZmaDMQtUw/UCf7GmwmaVI/AAAAAAAAF8s/ifZdEU2RbxI/s1600/dirsyncpro.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="180" src="https://2.bp.blogspot.com/-SnZmaDMQtUw/UCf7GmwmaVI/AAAAAAAAF8s/ifZdEU2RbxI/s200/dirsyncpro.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;
DirSyncPro is a cross-platform Java app with the icon set of a QT app. It traverses symlinks and junctions and it's "Job Sets" can sync multiple pairs of folders in one click.&lt;br /&gt;
&lt;br /&gt;
Cons: The UI is cluttered and complex, with way too many steps to configure things. Analysis takes much longer than FreeFileSync. It's annoying to have to hover over the base filename to see the relative path. Filters are disabled except in 2-way "Synchronization" mode.&lt;br /&gt;
&lt;a href="https://www.blogger.com/null" name="synkron"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;
&lt;a class="vt-p" href="https://sites.google.com/site/synkrondocumentation/"&gt;Synkron&lt;/a&gt;&lt;/h3&gt;
&lt;a class="vt-p" href="http://4.bp.blogspot.com/-FN-6LPiRKG4/UCf7Kve4V3I/AAAAAAAAF9M/xmXGR0zk_rs/s1600/synkron.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="161" src="https://4.bp.blogspot.com/-FN-6LPiRKG4/UCf7Kve4V3I/AAAAAAAAF9M/xmXGR0zk_rs/s200/synkron.png" width="200" /&gt;&lt;/a&gt;&lt;br /&gt;
Synkron is a cross-platform QT App. It appears to support N-way sync, not just 2-way.&lt;br /&gt;
&lt;br /&gt;
Cons: Although it compares the files found under junctions and symlinks, it displays an error that it "cannot synchronise" them.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
My Recommendation&lt;/h3&gt;
I recommend FreeFileSync because it's fast, usable, flexible and cross-platform.&lt;br /&gt;
&lt;br /&gt;
P.S. If you're avoiding syncing over the internet, you might be interested in these &lt;a href="http://blog.grahampoulter.com/2010/07/how-to-reduce-3g-bandwidth-usage-and-3g.html"&gt;tips for minimizing bandwidth usage&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Any more recommendations for local file synchronization?&lt;/i&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://2.bp.blogspot.com/-N8DxZqSq7Sg/Ww3OZu4EVAI/AAAAAAAC7wk/3HaQ8Qu0WMEtouswkvMgRYXZZOMHukl9ACLcBGAs/s72-c/FreeFileSync.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></item><item><title>Optimize Wordpress for tiny free tier VMs</title><link>http://blog.grahampoulter.com/2012/02/maximum-wordpress-performance-on-ec2.html</link><category>hacks</category><category>technical</category><author>noreply@blogger.com (Graham Poulter)</author><pubDate>Sat, 11 Feb 2012 14:21:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-22557003.post-2472045493150568082</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://1.bp.blogspot.com/-pzkkaA0rOlA/WxzxOmBO_1I/AAAAAAAC9ok/BlUGALypb6kfjVPS6yes68F8aW7uuQtwwCLcBGAs/s1600/wordpress-logo-notext-rgb.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="The Wordpress logo" border="0" data-original-height="984" data-original-width="996" height="394" src="https://1.bp.blogspot.com/-pzkkaA0rOlA/WxzxOmBO_1I/AAAAAAAC9ok/BlUGALypb6kfjVPS6yes68F8aW7uuQtwwCLcBGAs/s400/wordpress-logo-notext-rgb.png" title="Why is this post on Blogger then?" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;In which I show how to optimize Wordpress on Apache to handle a reasonable continuous load on a tiny free tier virtual machines, with only&amp;nbsp;standard Ubuntu packages. [6 minutes]&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
I recently managed to do all this myself,&amp;nbsp;and am writing it up as I haven't found a blog post that covers everything required to get Wordpress, Apache, mod_rewrite, mod_fastcgi, php-fpm and php-apc to play nicely together. There's plenty out there for nginx though.&lt;br /&gt;
&lt;br /&gt;
Brandon's Blog on &lt;a class="vt-p" href="http://www.brandonturner.net/blog/2009/07/fastcgi_with_php_opcode_cache/"&gt;FastCGI with PHP Opcode Cache&lt;/a&gt; captures basic principle and explains the benefits. Opcode caching however provides most of the performance, so most sites will do fine with mod_php (no need for mod_fastcgi + php-fpm).&lt;br /&gt;
&lt;br /&gt;
On free tier VMs from cloud providers, a stock Wordpress/mod_php install runs out of memory and CPU resources at just one request per second! One user opening all the archive posts or a vulnerability scanner or crawler can DOS your site for everyone else.&lt;br /&gt;
&lt;h2&gt;Basic Apache Settings&lt;/h2&gt;If you are using mod_php on a micro, first:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Set &lt;a class="vt-p" href="http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxclients"&gt;MaxClients&lt;/a&gt; from 150 down to 50 (Apache 2.2), &lt;a href="https://httpd.apache.org/docs/current/mod/mpm_common.html#startservers"&gt;StartServers&lt;/a&gt; in later versions.&lt;/li&gt;
&lt;li&gt;Set &lt;a href="https://httpd.apache.org/docs/current/mod/mpm_common.html#maxconnectionsperchild"&gt;MaxConnectionsPerChild&lt;/a&gt; to 1000&lt;/li&gt;
&lt;li&gt;Set &lt;a href="https://httpd.apache.org/docs/current/mod/core.html#keepalivetimeout"&gt;KeepAliveTimeout&lt;/a&gt; to 5&lt;/li&gt;
&lt;li&gt;Set &lt;a href="https://httpd.apache.org/docs/current/mod/core.html#maxkeepaliverequests"&gt;MaxKeepAliveRequests&lt;/a&gt; to 30 (about two-thirds of the MaxClients value)&lt;/li&gt;
&lt;/ol&gt;Lowering MaxClients respects micro's limited 593MB of system memory. Each Apache+mod_php process chews about 10MB. FastCGI with FPM can bring the Apache process size down to 2.5MB, but at that point the bottleneck is having only one CPU core for all servers to share.&lt;br /&gt;
&lt;h2&gt;Software used&lt;/h2&gt;&lt;div&gt;&lt;b&gt;Required&lt;/b&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a class="vt-p" href="http://httpd.apache.org/docs/2.2/"&gt;apache2&lt;/a&gt; - standard Apache 2.2 webserver on Ubuntu 11.10&lt;/li&gt;
&lt;li&gt;&lt;a class="vt-p" href="http://php.net/manual/en/book.apc.php"&gt;php-apc&lt;/a&gt; - Alternative PHP Cache, providing shared opcode cache&lt;/li&gt;
&lt;li&gt;&lt;a class="vt-p" href="http://wordpress.org/extend/plugins/apc/"&gt;APC Object Cache Backend&lt;/a&gt; - WP can use APC to retain objects between requests.&lt;/li&gt;
&lt;li&gt;&lt;a class="vt-p" href="http://wordpress.org/extend/plugins/wp-super-cache/"&gt;WP Super Cache&lt;/a&gt; - cache pages to static HTML&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Optional&lt;/b&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a class="vt-p" href="http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html"&gt;libapache2-mod-fastcgi&lt;/a&gt; - FastCGI module capable of talking to php-fpm.&lt;/li&gt;
&lt;li&gt;&lt;a class="vt-p" href="http://php-fpm.org/"&gt;php5-fpm&lt;/a&gt; - PHP FastCGI Process Manager (FPM) helps by sharing opcode cache.&lt;/li&gt;
&lt;/ul&gt;PHP FPM works with mod_fastcgi OR mod_fcgi_proxy but does &lt;i&gt;NOT&lt;/i&gt; work with mod_fcgid, because the latter does its own process management exclusively. FastCGI with FPM helps by sharing the opcode cache between processes... but this turns out to be a tiny improvement, so consider it optional.&lt;br /&gt;
&lt;h2&gt;Basic Optimizations&lt;/h2&gt;First &lt;a class="vt-p" href="http://codex.wordpress.org/Installing_WordPress" style="font-family: inherit;"&gt;install Wordpress from scratch&lt;/a&gt; under Apache + mod_php to a &lt;a class="vt-p" href="http://httpd.apache.org/docs/2.2/mod/core.html#documentroot"&gt;DocumentRoot&lt;/a&gt; of /srv/wordpress. On Ubuntu,  run sudo apt-get install libapache2-mod-php5 &lt;i&gt;php5-mysql php5-gd&lt;/i&gt; to get dependencies.&lt;br /&gt;
&lt;br /&gt;
Configure &lt;a class="vt-p" href="http://codex.wordpress.org/Using_Permalinks"&gt;Permalinks&lt;/a&gt; using mod_rewrite, since they're pretty and getting mod_rewrite to play nice with FastCGI is part of the trick.&lt;br /&gt;
&lt;h3&gt;WP Super Cache&lt;/h3&gt;Install WP Super Cache from the plugin manager, using the default "PHP" caching. WP Super Cache is a huge win for minimal effort, serving cached HTML to anonymous users without regenerating the page.&lt;br /&gt;
&lt;h3&gt;Opcode and Object Caching&lt;/h3&gt;Install the APC opcode cache with &lt;i&gt;sudo apt-get install php-apc&lt;/i&gt;. Run  &lt;i&gt;php -r 'phpinfo();'|grep apc&lt;/i&gt; to check that it's enabled. APC causes PHP sub-processes to inherit a warm opcode cache, greatly conserving CPU resources.&lt;br /&gt;
&lt;br /&gt;
Extract /usr/share/doc/php-apc/apc.php.gz to /srv/wordpress/apc.php and visit /apc.php to see how the cache is doing. If fragmentation is substantial then shm_size is too low. Restrict access to apc.php.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;apc.shm_size = 64M&lt;/i&gt; in /etc/php5/conf.d/apc.ini, because the default 32MB cache is too small for Wordpress (once you open Admin). Also set PHP &lt;i&gt;memory_limit&lt;/i&gt; to 64M. Also set &lt;i&gt;&lt;a class="vt-p" href="http://apc.slam_defense/"&gt;apc.slam_defense&lt;/a&gt; = 0&lt;/i&gt; to prevent piles of "Potential cache slam averted for key" in Apache's error.log. The the &lt;i&gt;slam_defense&lt;/i&gt; setting is deprecated by the default &lt;i&gt;apc.write_lock&lt;/i&gt; anyway.&lt;br /&gt;
&lt;br /&gt;
Install the &lt;a class="vt-p" href="http://plugins.svn.wordpress.org/apc/trunk/"&gt;trunk version&lt;/a&gt; (supports WP 3.1+) of APC Object Cache Backend simply by placing object-cache.php in the wp-content directory. Simply dropping the file in enables Wordpress to cache complex PHP objects between requests and is also a huge win for little effort.&lt;br /&gt;
&lt;h2&gt;Advanced micro-optimization&lt;/h2&gt;&lt;h3&gt;Set up mod_fastcgi with FPM&lt;/h3&gt;FPM takes PHP out of Apache, cutting startup memory for new Apache workers from 10MB to 2.5MB per process.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;WARNING&lt;/b&gt;: &lt;a href="http://www.brandonturner.net/blog/2009/07/fastcgi_php_opcode_cache_benchmarks/"&gt;Brandon's benchmarks&lt;/a&gt; found reqs/second performance is not improved by switching from mod_php to FastCGI, most of the performance gain came from opcode caching.  I now only recommend using FastCGI+FPM in case of (a) many concurrent requests and (b) serving a lot of static files (not just PHP content) because it conserves memory better.&lt;br /&gt;
&lt;br /&gt;
If you really want FastCGI+FPM, uncomment the "multiverse" lines in &lt;i&gt;/etc/apt/sources.list&lt;/i&gt; and run apt-get update to make libapache2-mod-fastcgi available. Run &lt;i&gt;sudo apt-get install libapache2-mod-fastcgi php5-cgi php5-fpm, &lt;/i&gt; which also enables mod_fastcgi and starts the "php5-fpm" service. For a micro instance, set FPM &lt;i&gt;max_children&lt;/i&gt; to 6, &lt;i&gt;max_requests&lt;/i&gt; to 500.  Immortal PHP processes been known to go crazy after a while - after a couple of days I found one hogging 100% CPU - so don't let them live forever.&lt;br /&gt;
&lt;br /&gt;
Add the following lines inside your WordPress &lt;a class="vt-p" href="http://httpd.apache.org/docs/2.2/vhosts/"&gt;VirtualHost&lt;/a&gt;, adapting "/srv/wordpress" to your DocumentRoot. It &lt;i&gt;pretends&lt;/i&gt; that there exists a PHP5 executable called "/php5.fcgi". mod_fastcgi intercepts calls to php5.fcgi and passes them to FPM instead. Also enable the "actions" module to support the "Action" line.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&amp;lt;IfModule !mod_php5.c&amp;gt;
&amp;lt;IfModule mod_fastcgi.c&amp;gt;
        Alias /php5.fcgi /srv/wordpress/php5.fcgi
        FastCgiExternalServer /srv/wordpress/php5.fcgi -host 127.0.0.1:9000
        AddHandler php-fpm .php
        Action php-fpm /php5.fcgi
&amp;lt;/IfModule&amp;gt;
&amp;lt;/IfModule&amp;gt;&lt;/pre&gt;&lt;h3&gt;Make mod_fastcgi work with mod_rewrite&lt;/h3&gt;The final trick is avoiding infinite recursion between mod_rewrite and mod_fastcgi, which shows up as lots of these in error.log: &lt;i&gt;the Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
The solution is to add a &lt;i&gt;RewriteCond %{REQUEST_URI} !^/php5.fcgi&lt;/i&gt; just before the final &lt;i&gt;RewriteRule . index.php [L]&lt;/i&gt; to prevent /php5.fcgi (the handler) from being re-written to /index.php, which then needs a handler (/php5.fcgi), which is then rewritten to /index.php, ad infinitum. The complete rule block looks as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span class="nb" style="color: #007020;"&gt;RewriteEngine&lt;/span&gt; &lt;span class="k" style="color: #007020; font-weight: bold;"&gt;On&lt;/span&gt;
&lt;span class="nb" style="color: #007020;"&gt;RewriteBase&lt;/span&gt; /
&lt;span class="nb" style="color: #007020;"&gt;RewriteRule&lt;/span&gt; ^index\.php$ - [L]
&lt;span class="nb" style="color: #007020;"&gt;RewriteRule&lt;/span&gt; ^files/(.+) wp-includes/ms-files.php?file=$1 [L]
&lt;span class="nb" style="color: #007020;"&gt;RewriteCond&lt;/span&gt; %{REQUEST_FILENAME} -f [OR]
&lt;span class="nb" style="color: #007020;"&gt;RewriteCond&lt;/span&gt; %{REQUEST_FILENAME} -d
&lt;span class="nb" style="color: #007020;"&gt;RewriteRule&lt;/span&gt; ^ - [L]
&lt;span class="nb" style="color: #007020;"&gt;RewriteCond&lt;/span&gt; %{REQUEST_URI} !^/php5.fcgi
&lt;span class="nb" style="color: #007020;"&gt;RewriteRule&lt;/span&gt; . index.php [L]&lt;/pre&gt;&lt;br /&gt;
Now you are ready to &lt;i&gt;a2enmod fastcgi &amp;amp;&amp;amp; a2dismod php5 &amp;amp;&amp;amp; service apache2 restart.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Try a test query. If anything goes wrong, you can immediately revert to mod_php5 by running &lt;i&gt;a2enmod php5 &amp;amp;&amp;amp; a2dismod fastcgi &amp;amp;&amp;amp; service apache2 restart&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
P.S. If you're using Elastic Load Balancer, check out my post on &lt;a href="http://blog.grahampoulter.com/2011/10/how-to-log-client-ip-from-apache-behind.html"&gt;getting Apache to log the correct client IP&lt;/a&gt;.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-pzkkaA0rOlA/WxzxOmBO_1I/AAAAAAAC9ok/BlUGALypb6kfjVPS6yes68F8aW7uuQtwwCLcBGAs/s72-c/wordpress-logo-notext-rgb.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>How to remove smoke smell from waterproof garments</title><link>http://blog.grahampoulter.com/2011/11/getting-smoke-smell-out-of-waterproof.html</link><category>lifehacks</category><author>noreply@blogger.com (Graham Poulter)</author><pubDate>Tue, 8 Nov 2011 18:46:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-22557003.post-7198247899616713082</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://3.bp.blogspot.com/-fH9evNAf5WQ/WzAdRns-HXI/AAAAAAAC-vQ/Mm2nY7pVUTU-4dpyUHEkJxtlS03nzG1IACLcBGAs/s1600/smoke-header.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="(remove smoke from waterproof garments)" border="0" data-original-height="400" data-original-width="712" src="https://3.bp.blogspot.com/-fH9evNAf5WQ/WzAdRns-HXI/AAAAAAAC-vQ/Mm2nY7pVUTU-4dpyUHEkJxtlS03nzG1IACLcBGAs/s1600/smoke-header.jpg" title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;This is how I got my waterproof jacket to smell fresh without losing the waterproofing, after it was infused with campfire smoke on the Cape Point overnight trail. [2 minutes]&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
My jacket used "Vapour-Tex" breathable waterproofing which includes a &lt;a href="http://www.rei.com/expertadvice/articles/rainwear+dwr.html"&gt;durable water repellant&lt;/a&gt; (DWR) coating. Normal detergents would get between the nanoscopic water repellent fibers of the DWR coating, rendering it ineffective. Then again, so does smoke!&lt;br /&gt;
&lt;h2&gt;Materials&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Non-detergent liquid cleaner (e.g.&lt;a href="http://www.nikwax.com/en-gb/products/productdetail.php?productid=4"&gt;Nikwax Tech Wash&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Washing machine with wool cycle, or basin of hand-hot water (40 degrees: can use without your hand hurting)&lt;/li&gt;
&lt;li&gt;Water repellent renewing spray (e.g.&amp;nbsp;&lt;a href="http://www.nikwax.com/en-gb/products/productdetail.php?productid=16"&gt;Nikwax TX Direct&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Tumble dryer with delicate setting, or a warm iron and cloth, or a hair dryer.&lt;/li&gt;
&lt;/ul&gt;&lt;i&gt;Note: I am in no way affiliated with Nikwax.&lt;/i&gt;&lt;br /&gt;
&lt;h2&gt;Instructions&lt;/h2&gt;The smoke smell was pretty stubborn, you might skip the second wash or long rinse if your garment passes the sniff test.&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;b&gt;Wash the garment once: &lt;/b&gt;with garment inside-out, hand-wash or use the machine wool or delicate wash cycle at 40 degrees centigrade (104 Fahrenheit), using one cap of waterproof cleaner. If hand washing, the water should be cool enough that you can hold your bare hands in it without pain.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Wash the garment a second time:&lt;/b&gt; hand-wash, and this time leaving it to soak overnight in the cleaner before rinsing.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Rinse the garment thoroughly:&lt;/b&gt; three times by hand in hand-hot water with soaking between, or in the machine's rinse cycle. If you can still smell the smoke, leave it to soak for the day in water. Jacket should eventually pass the sniff test - no smell of smoke.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Apply waterproofing spray:&lt;/b&gt; after drip-drying for half an hour, apply the spray-on waterproofing while the garment is still wet. Leave the spray on for about 10 minutes then wipe off the excess.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Allow the garment to air dry&lt;/b&gt;. Yes, just put it on a hanger and hang it out to dry.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Activate the water repellent with heat:&lt;/b&gt; either with garment inside-out on a gentle tumble dry cycle for 15 minutes, or using a hair-dryer, or by ironing the garment with a towel between it and the iron.&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:right; float:right;"&gt;&lt;a data-pin-do="embedPin" data-pin-terse="true" href="https://www.pinterest.com/pin/118149190210240296/"&gt;&lt;/a&gt;&lt;/div&gt;Now your garment should be clean, no longer smelling of smoke, and still waterproof!&lt;br /&gt;
&lt;br /&gt;
P.S. also check out my post on &lt;a href="http://blog.grahampoulter.com/2018/05/7-ways-to-make-clothes-last.html"&gt;extending the life of your clothing&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Do you have any tips on getting smoke out of waterproof garments? Comment below!&lt;/i&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://3.bp.blogspot.com/-fH9evNAf5WQ/WzAdRns-HXI/AAAAAAAC-vQ/Mm2nY7pVUTU-4dpyUHEkJxtlS03nzG1IACLcBGAs/s72-c/smoke-header.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><georss:featurename xmlns:georss="http://www.georss.org/georss">Cape Town, South Africa</georss:featurename><georss:point xmlns:georss="http://www.georss.org/georss">-33.9248685 18.4240553</georss:point><georss:box xmlns:georss="http://www.georss.org/georss">-34.346497500000005 17.7923413 -33.5032395 19.055769299999998</georss:box></item><item><title>How to log client IP from Apache behind Elastic Load Balancer</title><link>http://blog.grahampoulter.com/2011/10/how-to-log-client-ip-from-apache-behind.html</link><category>hacks</category><category>technical</category><author>noreply@blogger.com (Graham Poulter)</author><pubDate>Thu, 27 Oct 2011 10:51:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-22557003.post-7293808881275324900</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-vRoXmHUOILY/Wxzt88VoPlI/AAAAAAAC9nM/h5govuV9YFouwkABUGMTLr_LX6PW0ERmwCLcBGAs/s1600/Apache_HTTP_server_logo_%25282016%2529_800px.svg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="The Apache rainbow feather logo" border="0" data-original-height="210" data-original-width="800" height="168" src="https://1.bp.blogspot.com/-vRoXmHUOILY/Wxzt88VoPlI/AAAAAAAC9nM/h5govuV9YFouwkABUGMTLr_LX6PW0ERmwCLcBGAs/s640/Apache_HTTP_server_logo_%25282016%2529_800px.svg.png" title="Apache is not what I'd call a &amp;quot;featherweight&amp;quot; web server" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
This is my solution to make&amp;nbsp;Apache HTTP Server&amp;nbsp;log the actual remote client IP address from behind the Amazon Elastic Load Balancer&amp;nbsp;(ELB), with a little help from&amp;nbsp;SetEnvIf. [2 minutes]&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;
The Problem&lt;/h2&gt;
The problem is that the &lt;a href="http://aws.amazon.com/elasticloadbalancing/"&gt;Elastic Load Balancer&lt;/a&gt; (ELB) sets REMOTE_ADDR to the &lt;i&gt;load balancer&lt;/i&gt; IP address. However it also sets the &lt;a href="http://en.wikipedia.org/wiki/X-Forwarded-For"&gt;X-Forwarded-For&lt;/a&gt;&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/List_of_HTTP_header_fields"&gt;HTTP header&lt;/a&gt; to a comma-delimited string of ip-addresses like&amp;nbsp;&lt;i&gt;client&lt;/i&gt;, &lt;i&gt;proxy1&lt;/i&gt;, &lt;i&gt;proxy2&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
Some suggest replacing &lt;span class="Apple-style-span" style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;%h&lt;/span&gt; (REMOTE_ADDR) in the NCSA common log format (&lt;span class="Apple-style-span" style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;"&gt;%h %l %u %t \"%r\" %&amp;gt;s %O&lt;/span&gt;) with the X-Forwarded-For header:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;LogFormat "\"%{X-Forwarded-For}i\" %l %u %t \"%r\" %&amp;gt;s %O xfwd_common&lt;/pre&gt;
&lt;br /&gt;
This approach has two problems:&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
1. Broken log formatting&lt;/h3&gt;
Comma-separated IP addresses violate the &lt;a href="http://publib.boulder.ibm.com/tividd/td/ITWSA/ITWSA_info45/en_US/HTML/guide/c-logs.html#ncsa"&gt;NCSA common and combined log formats&lt;/a&gt;&amp;nbsp;and generally breaks applications that attempt to extract the log fields.&lt;br /&gt;
&lt;br /&gt;
Above I added&amp;nbsp;quotes around X-Forwarded-For to make it easier to extract by regex. &amp;nbsp; Supporting this modified format in&amp;nbsp;&lt;a href="http://www.splunk.com/"&gt;Splunk&lt;/a&gt; involves adapting the access-extractions &lt;a href="http://docs.splunk.com/Documentation/Splunk/latest/admin/transformsconf"&gt;transform&lt;/a&gt; to use&amp;nbsp;&lt;i&gt;[[qstring:clientip]]&lt;/i&gt;&amp;nbsp; (quoted string) instead of&amp;nbsp;&lt;i&gt;[[nspaces:clientip]] &lt;/i&gt;(no-spaces string).&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
2. Missing IP for unproxied requests&lt;/h3&gt;
Direct or unproxied HTTP requests lack the X-Forwarded-For header, so the clientip is logged as "". &amp;nbsp; &amp;nbsp;If all clients connect via the load balancer this won't happen, but in practice developers and&amp;nbsp;monitoring agents&amp;nbsp;may want to skip the load balancer.&lt;br /&gt;
&lt;h2&gt;
The Solution&lt;/h2&gt;
My solution for standard log formatting and logging of unproxied IPs uses &lt;a href="http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html"&gt;SetEnvIf&lt;/a&gt; to log the remote client IP from REMOTE_ADDR initially, and overwrites it with the first component of the X-Forwarded-For header only if available, meaning the request is proxied:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;SetEnvIf REMOTE_ADDR "(.+)" CLIENTIP=$1
SetEnvIf X-Forwarded-For "^([0-9.]+)" CLIENTIP=$1
LogFormat "%{CLIENTIP}e %D %u %t \"%r\" %&amp;gt;s %O \"%{Referer}i\" \"%{User-Agent}i\"" trueip_combined
&lt;/pre&gt;
&lt;br /&gt;
The third line defines the custom trueip_combined log format that uses CLIENTIP in place of %h and uses %D in the place of the never-used ident field (%l)&amp;nbsp;to log request latency in microseconds.&lt;br /&gt;
&lt;br /&gt;
P.S. if you're running Wordpress on the EC2 instance, check out my how-to for&amp;nbsp;&lt;a href="http://blog.grahampoulter.com/2012/02/maximum-wordpress-performance-on-ec2.html"&gt;optimizing Wordpress on EC2 micro instances&lt;/a&gt;.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-vRoXmHUOILY/Wxzt88VoPlI/AAAAAAAC9nM/h5govuV9YFouwkABUGMTLr_LX6PW0ERmwCLcBGAs/s72-c/Apache_HTTP_server_logo_%25282016%2529_800px.svg.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total></item><item><title>Show Git / Mercurial / SVN / Bazaar branch in the Bash prompt</title><link>http://blog.grahampoulter.com/2011/09/show-current-git-bazaar-or-mercurial.html</link><category>hacks</category><category>technical</category><author>noreply@blogger.com (Graham Poulter)</author><pubDate>Tue, 13 Sep 2011 14:41:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-22557003.post-6547621127916203970</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-5HG2vabv9to/VoP4Lpgd26I/AAAAAAAAAws/0Ohj0BWLwwU/s1600/command-prompt.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Clipart image of a blank command prompt" border="0" height="400" src="https://1.bp.blogspot.com/-5HG2vabv9to/VoP4Lpgd26I/AAAAAAAAAws/0Ohj0BWLwwU/s400/command-prompt.png" title="Imagine a real prompt here" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
This is my solution for modifying the Bash prompt (PS1) to show the branch name. It works for any working directory in a Git, Mercurial, Subversion or Bazaar branch. [2 minutes]&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
The function works by looking for a&amp;nbsp;.git, .hg, .svn or .bzr in any of the ancestor directories, and if found uses appropriate commands like __git_ps1, hg branch, svn info to deduce the branch name to prepend to the PS1 prompt.&amp;nbsp; For Bazaar it avoids the slow "bzr nick" command by looking in branch.conf directly. Here is the embedded gist:&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/gpoulter/97e19d62353585b6e79dac518b9b54b5.js"&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
Here is a link to the&amp;nbsp;&lt;a href="https://gist.github.com/gpoulter/97e19d62353585b6e79dac518b9b54b5"&gt;show branch name in Bash prompt&lt;/a&gt; gist, for when the embedding is not displaying.&lt;br /&gt;
&lt;br /&gt;
Super handy if you have lots of checkouts all over the place!&lt;br /&gt;
&lt;br /&gt;
P.S. if you are into working more efficiently, try this summary of &lt;a href="http://blog.grahampoulter.com/2012/09/summary-of-time-management-for-system.html"&gt;Time Management for System Administrators&lt;/a&gt;&amp;nbsp;(applies just as much to DevOps and SRE).&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Did you find this useful, have any improvements, or find any bugs? Comment below!&lt;/i&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-5HG2vabv9to/VoP4Lpgd26I/AAAAAAAAAws/0Ohj0BWLwwU/s72-c/command-prompt.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>How to grow a large crystal of copper (II) sulphate in 5 days</title><link>http://blog.grahampoulter.com/2010/09/how-to-grow-large-copper-sulphate.html</link><category>skills</category><author>noreply@blogger.com (Graham Poulter)</author><pubDate>Sun, 26 Sep 2010 14:22:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-22557003.post-532783391090404944</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://3.bp.blogspot.com/-JdtkfQzMDxE/WzAaf00puvI/AAAAAAAC-vE/VWjSsBN06hUVemlocujL_nfpe6dk7XcWgCLcBGAs/s1600/crystal-header.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="400" data-original-width="712" src="https://3.bp.blogspot.com/-JdtkfQzMDxE/WzAaf00puvI/AAAAAAAC-vE/VWjSsBN06hUVemlocujL_nfpe6dk7XcWgCLcBGAs/s1600/crystal-header.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
Presenting a faster way to grow large copper sulphate crystals! The pictured 4cm crystal took me 5 days by cooling, instead of the 3-6 weeks it would take by evaporation. [4 minute read]&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;h2&gt;
Introduction&lt;/h2&gt;
Growing &lt;a href="http://en.wikipedia.org/wiki/Copper(II)_sulfate"&gt;copper (II) sulphate&lt;/a&gt;&amp;nbsp;crystals was a childhood hobby of mine that I tried again as an adult. The usual way to grow crystals is slowly by evaporating a saturated solution, but I worked that you can grow them faster by occasionally adding supersaturated solution to the crystal mixture instead of waiting for water to evaporate. The accelerated growth does make the crystal more cloudy, and requires some some daily effort to create the solution.&lt;br /&gt;
&lt;h2&gt;
Materials&lt;/h2&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/_rswIZalsPuc/TJ8Nww8ysdI/AAAAAAAACMM/CG8SNLbwScs/s1600/0909-191640.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="The materials for crystal growing" border="0" height="240" src="https://1.bp.blogspot.com/_rswIZalsPuc/TJ8Nww8ysdI/AAAAAAAACMM/CG8SNLbwScs/s320/0909-191640.jpg" title="No fancy equipment required" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;2 small glass beakers or empty jars&lt;/li&gt;
&lt;li&gt;Distilled water&lt;/li&gt;
&lt;li&gt;50g copper sulphate&lt;/li&gt;
&lt;li&gt;0.2mm nylon fish line&lt;/li&gt;
&lt;li&gt;Small plastic funnel&lt;/li&gt;
&lt;li&gt;Glass ash tray&lt;/li&gt;
&lt;li&gt;Plastic spoon&lt;/li&gt;
&lt;li&gt;Toothpick or cardboard&lt;/li&gt;
&lt;li&gt;Blu Tack&lt;/li&gt;
&lt;li&gt;Cloth to cover jars&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
Most pharmacies should still have distilled water. For the copper sulphate you might call ahead,&amp;nbsp;most pharmacies no longer stock it as an anti-fungal treatment.&lt;/div&gt;
&lt;h2&gt;
Warning&lt;/h2&gt;
Copper sulphate is moderately toxic when consumed. At least it tastes horrible. The solution stains absolutely everything porous. It even precipitates a copper coating onto steel spoons, hence the plastic spoon. Copper sulphate stains can be removed from cotton with peroxy-type stain removers. It and take weeks to come out from under your fingernails, so I recommend wearing gloves. On the plus side, copper sulphate is a traditional anti-fungal treatment for skin which is why pharmacies stock it.&lt;br /&gt;
&lt;h2&gt;
Instructions&lt;/h2&gt;
&lt;h3&gt;
Make a supersaturated solution&lt;/h3&gt;
&lt;h3&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://2.bp.blogspot.com/-Fcm4N-U5oy0/Wx0BOqY7D8I/AAAAAAAC9o8/1pKHDqbEWowBEwUuM7ep77b4jD5l-VjJACLcBGAs/s1600/copper-sulphate-small.jpg" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img alt="Small rhombic copper sulphate crystal" border="0" data-original-height="1200" data-original-width="1600" height="150" src="https://2.bp.blogspot.com/-Fcm4N-U5oy0/Wx0BOqY7D8I/AAAAAAAC9o8/1pKHDqbEWowBEwUuM7ep77b4jD5l-VjJACLcBGAs/s200/copper-sulphate-small.jpg" title="" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Heat about 100ml of distilled water in a beaker in the microwave at medium power, watching to avoid boiling it.&lt;/li&gt;
&lt;li&gt;Add about 25g of copper sulphate for starters&lt;/li&gt;
&lt;li&gt;Stir with plastic spoon until no more is dissolves, taking about 2 minutes, thus saturating the solution.&lt;/li&gt;
&lt;li&gt;Pour just the liquid solution into a second jar using a filter if you like.&lt;/li&gt;
&lt;li&gt;Leave the solution to cool down to supersaturate it, which goes faster placing the beaker in freezer or ice water.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;h3&gt;
Grow and placing a seed crystal&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Fill the glass ashtray about 5mm deep with supersaturated solution.&lt;/li&gt;
&lt;li&gt;Place the ashtray in the fridge for a few hours..&lt;/li&gt;
&lt;li&gt;Pick out either a single crystal or multicrystal with tweezers.&lt;/li&gt;
&lt;li&gt;Tie a nylon fishing line around the crystal using a slip knot.&lt;/li&gt;
&lt;li&gt;Suspend the crystal in a jar of cool supersaturated solution using toothpick and blu tack, taking care that it does not touch the sides.&lt;/li&gt;
&lt;li&gt;Cover the jar with cloth to avoid dust getting in.&lt;/li&gt;
&lt;li&gt;Place the jar in the fridge.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
Now over the next 8 hours or so the extra copper sulphate will precipitate out either onto the growing crystal or to the bottom of the beaker, leaving behind a saturated solution.&lt;/div&gt;
&lt;/div&gt;
&lt;ol&gt;&lt;ol&gt;&lt;/ol&gt;
&lt;/ol&gt;
&lt;h3&gt;
Grow the crystal&lt;/h3&gt;
Spend 10 minutes of your time morning and evening to refresh the saturated solution.&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Remove the growing crystal and place to one side.&lt;/li&gt;
&lt;li&gt;Pour about 75% of the saturated solution into a clean beaker #2.&lt;/li&gt;
&lt;li&gt;With the 25% remaining solution in beaker #1, re-dissolve the crystals on the bottom by microwaving on low power then stirring.&lt;/li&gt;
&lt;li&gt;Place beaker #1 containing not-quite-saturated hot solution in the freezer or ice water to cool it down, making it supersaturated.&lt;/li&gt;
&lt;li&gt;Add the supersaturated solution to beaker #2, using a filter if necessary.&lt;/li&gt;
&lt;li&gt;Suspend the growing crystal in beaker #2, place in fridge, and wait 8-12 hours.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
If there is no crystal mat on the bottom, add more copper sulphate to the 25% being heated.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-17V71gryD-8/Wx0BGuGwYkI/AAAAAAAC9o4/OT5BOdpe_PcCSP84ATaFSiHaHoxfNTU9QCLcBGAs/s1600/copper-sulphate-with-string.jpg" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img alt="Copper sulphate crystal with nylon string attached" border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://1.bp.blogspot.com/-17V71gryD-8/Wx0BGuGwYkI/AAAAAAAC9o4/OT5BOdpe_PcCSP84ATaFSiHaHoxfNTU9QCLcBGAs/s320/copper-sulphate-with-string.jpg" title="" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h3&gt;
&lt;b&gt;Tips&lt;/b&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Thin vs thick line&lt;/b&gt;: using 0.2mm nylon line prevents new crystals forming on the line. You can use a thicker line to grow a multi-crystal along the line directly without a seed crystal.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Solubility increases with temperature&lt;/b&gt;: careful not to add hot solution to the crystal beaker, as it may not be supersaturated and could dissolve your crystal. Wait for it to cool first.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Paint with clear nail polish&lt;/b&gt;: because CuS0&lt;span class="Apple-style-span" style="font-size: small;"&gt;4&lt;/span&gt;.5H&lt;span class="Apple-style-span" style="font-size: small;"&gt;2&lt;/span&gt;O is a hydrated crystal, that dehydrates after a while to white powder (copper sulphate anhydrate). Painting helps reduce evaporation. Storing crystal on some copper sulphate powder can also help.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
The &lt;a href="https://www.sspc.ie/sites/default/files/SSPC%20National%20Crystal%20Growing%20Competition%20_instructions_3.pdf"&gt;SPCC National Crystal Growing Competition&lt;/a&gt;&amp;nbsp;has advice for advanced crystal growing.&amp;nbsp;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://3.bp.blogspot.com/-JdtkfQzMDxE/WzAaf00puvI/AAAAAAAC-vE/VWjSsBN06hUVemlocujL_nfpe6dk7XcWgCLcBGAs/s72-c/crystal-header.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total></item><item><title>How to save mobile data when tethering</title><link>http://blog.grahampoulter.com/2010/07/how-to-reduce-3g-bandwidth-usage-and-3g.html</link><category>hacks</category><category>technical</category><author>noreply@blogger.com (Graham Poulter)</author><pubDate>Fri, 9 Jul 2010 16:22:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-22557003.post-6066979767648969856</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://4.bp.blogspot.com/-QfHx0i9X1A8/WzAjJsesfkI/AAAAAAAC-v0/ktfbngoY1KM-3xq8vswuQWGui27EdUMvgCLcBGAs/s1600/tethering-header.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Using less data when tethering" border="0" data-original-height="400" data-original-width="712" src="https://4.bp.blogspot.com/-QfHx0i9X1A8/WzAjJsesfkI/AAAAAAAC-v0/ktfbngoY1KM-3xq8vswuQWGui27EdUMvgCLcBGAs/s1600/tethering-header.jpg" title="" /&gt;&lt;/a&gt;&lt;/div&gt;These are my tips for minimizing the data usage of your PC. It's handy in cases where you have to tether your mobile phone but mobile data is expensive. [3 minutes]&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;h2&gt;Operating System Tweaks&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;OS Updates&lt;/b&gt;: disable automatic download of operating system updates. In Windows 10, turn on the "Metered connection" mode.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;App Updates&lt;/b&gt;: disable all 3rd-parter auto-updaters using &lt;a href="http://www.piriform.com/ccleaner"&gt;CCleaner&lt;/a&gt; (disable Flash, Java,  Google updaters and any others)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;File Synchronization&lt;/b&gt;: pause any syncing by Google Drive Sync, OneDrive, DropBox, iTunes or other file and media software.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Subscriptions&lt;/b&gt;: turn off auto-downloading subscription services like podcasts in iTunes.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;TCP &amp;amp; Bandwidth Monitoring:&lt;/b&gt; to see if any unexpected services  are using the internet and turn them off. &amp;nbsp;Use&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Lsof"&gt;&lt;i&gt;lsof -i&lt;/i&gt;&lt;/a&gt;  on linux, &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897437.aspx"&gt;TcpView&lt;/a&gt;&amp;nbsp;&lt;i&gt;or &lt;a href="http://www.netlimiter.com/"&gt;Netlimiter Free&lt;/a&gt;&amp;nbsp;(thanks Sam)&lt;/i&gt; on Windows.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Browser Tweaks&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Browser Updates&lt;/b&gt;: disable browser update and add-on updates.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Disable Images&lt;/b&gt;: in Firefox uncheck&amp;nbsp;&lt;i&gt;Load images automatically&lt;/i&gt; checkbox, in Chrome "Content settings" select "Do not show any images" and "Do not allow any sites to use plug-ins"&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Use Content Blockers&lt;/b&gt;: install&amp;nbsp;AdBlock Plus with all options on, and either uBlock Origin or Ghostery, to avoid downloading random content.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Mobile User Agent&lt;/b&gt;: use &lt;i&gt;chrome --user-agent&lt;/i&gt;&amp;nbsp;flag or use Firefox about:config useragent set a mobile browser UA. This may get you smaller mobile versions for some websites.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Pre-fetching&lt;/b&gt;: In Chrome disable search-completion and DNS prefetching, in Firefox disable &lt;a href="https://support.mozilla.org/en-US/kb/how-stop-firefox-making-automatic-connections#w_dns-prefetching"&gt;DNS Prefetching&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div style="clear:right; float:right;"&gt;&lt;a data-pin-do="embedPin" data-pin-terse="true" href="https://www.pinterest.com/pin/118149190210240431/"&gt;&lt;/a&gt;&lt;/div&gt;P.S. When tethering an iPhone to Ubuntu desktop, I needed to a special config from&amp;nbsp;&lt;a href="http://wan.to/iphone/"&gt;http://wan.to/iphone/&lt;/a&gt;&amp;nbsp;and a&amp;nbsp;how-to for&amp;nbsp;&lt;a href="http://www.ubuntugeek.com/iphone-tethering-on-ubuntu-9-10-karmic.html"&gt;iPhone tethering in Ubuntu&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Do you have any more tips on saving mobile data while tethered? Comment below!&lt;/i&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://4.bp.blogspot.com/-QfHx0i9X1A8/WzAjJsesfkI/AAAAAAAC-v0/ktfbngoY1KM-3xq8vswuQWGui27EdUMvgCLcBGAs/s72-c/tethering-header.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total></item><item><title>Tips on using the Panasonic Lumix DMC-ZS5/TZ8 camera</title><link>http://blog.grahampoulter.com/2010/04/panasonic-lumix-dmc-tz8zs5-travel-zoom.html</link><category>reviews</category><author>noreply@blogger.com (Graham Poulter)</author><pubDate>Sun, 18 Apr 2010 18:55:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-22557003.post-2307823304691145471</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-tlQZU5IqBFg/Wxzuy0qvNsI/AAAAAAAC9nY/LsaZyE35aQUn2HYoUVscMn4e9rKfaeaEgCLcBGAs/s1600/panasonic-lumix-dmc-zs5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Panasonic DMC-ZS5 camera" border="0" data-original-height="378" data-original-width="620" height="388" src="https://1.bp.blogspot.com/-tlQZU5IqBFg/Wxzuy0qvNsI/AAAAAAAC9nY/LsaZyE35aQUn2HYoUVscMn4e9rKfaeaEgCLcBGAs/s640/panasonic-lumix-dmc-zs5.jpg" title="My camera got smashed in a few months later" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
What follows is my review and advice on the 2010 Panasonic Lumix DMC-ZS5 "Super-Zoom" camera that I recently bought in Cape Town recently. Also known as DMC-TZ8 in Asia/Europe. [5 minutes]&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Below are my findings from taking the camera on real-life overseas travel for a week. Note I have no affiliation with Panasonic, I just felt like writing about my camera.&lt;br /&gt;
&lt;h4&gt;
On the confusing naming&lt;/h4&gt;
I think ZS implies "Super Zoom" and TZ means "Travel Zoom". The ZS5 is the US camera specially imported by &lt;a href="http://www.sacamera.co.za/"&gt;SA Camera&lt;/a&gt;, because the European version, the TZ8, is not yet available in South Africa through the Panasonic distribution channels. The difference is the charger (US vs EU plug) and NTSC vs PAL TV-out. The charger is a pain in Europe where travel adaptors feature a rim that prevents the US pins on the charger from actually reaching the socket. Fortunately the lithium battery lasted over 330 photos and a few minutes of movie (Friday to Monday), and only needed 10 minutes of charging at a Zurich camera shop to last the rest of Monday.&lt;br /&gt;
&lt;h4&gt;
ZS5/TZ8 vs the ZS7/TZ10&lt;/h4&gt;
The ZS5/TZ8 is also the baby brother of the ZS7/TZ10, the difference being a smaller LCD, lack of RAW recording, lack of AVCHD encoding for hi-def video, and lack of a (power-sucking) GPS to geocode all your photos for you. Nonetheless the ZS5/TZ8 is a great travel companion: small and lightweight, it's happy to do all the hard thinking for you, and has great zoom for zoo visits, and you can even tell it what time zone and location tag to use for the dates of your trip. Lastly, the ZS5/TZ8 and ZS7/TZ10 are successor to the ZS3/TZ7 that was released in early 2009.&lt;br /&gt;
&lt;h4&gt;
Intelligent Auto Mode&lt;/h4&gt;
Most of the time I stick with the iA or "Intelligent Auto" mode, which on half-press will select a scene type (portrait, scenery, action, night portrait etc), detect normal vs macro mode, select ISO rating, shutter speed and aperture, flash mode, picks out the subjects to focus on. iA mode does have a few parameters including maximum ISO rating, forcing flash-off the resolution / aspect ratio (4:3, 16:9 or 3:2). If I don't like the settings, I release the button, half-press again and iA will often pick different settings, for example focusing on the zoo animal instead of the cage. Specifying "ISO-max 400" is handy for auto-mode because the higher ISO levels that it might pick - up to ISO 3200 for a motion-shot in the dark - are too grainy to be of any use.&lt;br /&gt;
&lt;h4&gt;
The 12x Optical Zoom&lt;/h4&gt;
The zoom toggle maxes out at 12x zoom, but hitting the extended zoom button will let it go up to 16x zoom at a lower resolution (center of CCD), and hitting the button again will digitally zoom to 32x. Once more goes all the way back to 1x zoom (wide-angle). The image stabiliser ensures photos are not blurry except if the subject was stationary at half-press (slow shutter selected), but then starts moving after the half-press. If it is very dark and your hands aren't steady the camera tries to compensate by using the highest ISO and fastest shutter feasible, for a dark and grainy but only slightly blurry photo. If you use a tripod for the night scenery it will select a longer exposure and take a good photo.&lt;br /&gt;
&lt;h4&gt;
The Programmable Mode&lt;/h4&gt;
I also use the P or "Programmable" often in situations where iA gets it wrong, typically with funny lighting or macro scenes. I prefer programmable mode to selecting one of the three-dozen specific scene modes. P-mode will still select the shutter, aperture, ISO and auto-focus, but it has a quick-menu to configure all the scene related settings like exposure, white balance, macro mode, ISO mode (specific ISO or auto+ISO-max) flash mode, auto-focus mode, stabiliser mode and dozens of other settings. The P mode has an option to record 5 seconds of sound alongside the photo, which is handy for recording captions you would otherwise forget, like plant names.&lt;br /&gt;
&lt;h4&gt;
The Manual, Shutter and Aperture Modes&lt;/h4&gt;
For special shots I use manual (M), shutter-priority (S) or aperture-priority (A) modes. S-mode has manual shutter speed and auto-aperture, useful for long nigh-time exposures taken with a tripod. Aperture-priority mode is the opposite and is useful for shallow-field or deep-field shots. Manual mode takes manual shutter, aperture and exposure, but will still do automatic ISO, white balance and such if you let it.&lt;br /&gt;
&lt;h4&gt;
The Image Quality&lt;/h4&gt;
The image quality is ok for a compact if you don't let the ISO go above 400. The small high-density CCD has a lot more per-pixel noise than the small low-megapixel CCD's of older cameras or the large CCDs of the four-thirds DSLRs. But the noise is mainly noticeable at 1:1 zoom - you don't see it at screen size, scaled down for web albums, or in print. The movie quality is meh, it's ok provided you pan very slowly, but so far I haven't taken anything worth uploading.&lt;br /&gt;
&lt;h4&gt;
Reliability&lt;/h4&gt;
I do have a reliability complaint, in that the LCD is easily scratched by just one grain of sand. Do not let the camera anywhere near sand or dirt. Also, I expect that to sit on the camera or drop it once will be the end of it. It's also susceptible to humidity, temperature and pressure changes (well, to condensation), so I'm concerned that the dirt and dew found on overnight hikes will bring the camera to an early death if I regularly take hiking. So far the camera is two weeks in and going strong.&lt;br /&gt;
&lt;br /&gt;
You can find more reviews of the DMC-ZS5 on &lt;a href="http://www.photographyblog.com/reviews/panasonic_lumix_dmc_tz8_review/"&gt;photographyblog&lt;/a&gt;, &lt;a href="http://www.dpreview.com/news/1001/10012604panazs5.asp"&gt;dpreview&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Do you have any thoughts to add on the DMC-ZS5 / DMC-TZ8 camera?&lt;/i&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-tlQZU5IqBFg/Wxzuy0qvNsI/AAAAAAAC9nY/LsaZyE35aQUn2HYoUVscMn4e9rKfaeaEgCLcBGAs/s72-c/panasonic-lumix-dmc-zs5.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">9</thr:total></item><item><title>How to use cwRsync and rsnapshot to sync from Windows to Linux</title><link>http://blog.grahampoulter.com/2010/03/back-up-windows-server-with-cwrsync-and.html</link><category>hacks</category><category>technical</category><author>noreply@blogger.com (Graham Poulter)</author><pubDate>Wed, 31 Mar 2010 15:27:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-22557003.post-7985253841156874240</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_rswIZalsPuc/TKSkhTfYDfI/AAAAAAAACNA/jUuEL834G4E/s1600/rsync_ssh_logo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="The rsync logo" border="0" height="250" src="https://4.bp.blogspot.com/_rswIZalsPuc/TKSkhTfYDfI/AAAAAAAACNA/jUuEL834G4E/s400/rsync_ssh_logo.jpg" title="Old logo for ancient software" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Here is how to sync files from Windows to Linux with rsync. Specifically, using&amp;nbsp;cwRsync server (a Cygwin + rsync package) on the Windows server, and rsnapshot&amp;nbsp;on the Linux backup server. [3 minutes]&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;Windows Server Setup&lt;/h2&gt;First download the &lt;a href="http://itefix.no/i2/download"&gt;cwRsync server package&lt;/a&gt; and install it on the Windows server. It will attempt to create a service user for cwRsync, but the user creation did not work for me. Rather specify the name and password of an existing service account (specially-created if necessary) for &lt;i&gt;RsyncServer&lt;/i&gt; service to run as. Use the services panel to configure &lt;i&gt;RsyncServer&lt;/i&gt; to run automatically on boot. Before starting the service, configure the &lt;i&gt;rsyncd.conf &lt;/i&gt;along these lines:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;uid = 0
gid = 0
use chroot = false
strict modes = false
hosts allow = backups.example.com
log file = rsyncd.log

[examplemodule]
path = /cygdrive/c/example/path/to/back/up
read only = true
transfer logging = yes&lt;/pre&gt;&lt;br /&gt;
The &lt;i&gt;uid=0&lt;/i&gt; and &lt;i&gt;gid=0&lt;/i&gt; must be added to avoid the &lt;a class="ext-link" href="http://www.itefix.no/i2/node/11817"&gt;&lt;span class="icon"&gt;&lt;/span&gt;@ERROR Invalid UID nobody&lt;/a&gt;. The &lt;i&gt;hosts allow&lt;/i&gt; line is to only allow the backup server to access the data. Configure rsync modules for each local resource to back up, using Cygwin paths (/cygdrive/c). You can test the &lt;i&gt;rsyncd.conf&lt;/i&gt; by running rsync from the cwRsync "ICW" directory in Program Files and attempting to rsync from it on the Linux server:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;bin\rsync.exe --config=rsyncd.conf --daemon --no-detach&lt;/pre&gt;&lt;h2&gt;Linux Server Setup&lt;/h2&gt;On the Linux backup server, install &lt;a href="http://rsnapshot.org/"&gt;rsnapshot&lt;/a&gt;. By default there are 6 hourly snapshots (one every 4 hours), 7 daily snapshots, 4 weekly snapshots and 3 monthly snapshots. Add to&amp;nbsp;&lt;i&gt;/etc/rsnapshot.conf&lt;/i&gt;&amp;nbsp;a line like this to get data from the windows server. Type tabs between the items, not spaces.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;backup    rsync://windowsbox.example.com/examplemodule     windowsbox&lt;/pre&gt;&lt;br /&gt;
Also config the &lt;i&gt;snapshot_root&lt;/i&gt; to where you want the files to go. The awesomeness of rsnapshot is that it uses the rsync --link-dest option: as it creates the new snapshot it detects unchanged files from the previous snapshot and hardlinks back to them. Thus, you get complete snapshots using only an incremental amount of space. To view the files as they were 3 days ago, visit the daily.3 directory under "windowsbox" in snapshot_root.&lt;br /&gt;
&lt;br /&gt;
P.S. These steps were tested with rsync 3.0.7 and rsnapshot 1.3.1 on Linux (CentOS 5.4), and cwRsync 4.0.4 (includeing rsync 3.0.7) on Windows (Server 2008).&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt; &lt;i&gt;Do you have a better way to regularly backup Windows files to a Linux server? Comment below!&lt;/i&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://4.bp.blogspot.com/_rswIZalsPuc/TKSkhTfYDfI/AAAAAAAACNA/jUuEL834G4E/s72-c/rsync_ssh_logo.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></item><item><title>How to learn the Colemak keyboard Layout</title><link>http://blog.grahampoulter.com/2009/03/qwerty-layout-dumped-in-favour-of-low.html</link><category>opinions</category><category>skills</category><category>technical</category><author>noreply@blogger.com (Graham Poulter)</author><pubDate>Sat, 7 Mar 2009 10:59:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-22557003.post-1507195301420791523</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://2.bp.blogspot.com/-rwiGM4Joa_c/WxzvAfUhmrI/AAAAAAAC9nc/uLI8VeVxa7w3L7oGOGcvk-O3Psw0LVaIQCLcBGAs/s1600/Colemak_fingers.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Colemak keyboard finger map" border="0" data-original-height="243" data-original-width="730" height="211" src="https://2.bp.blogspot.com/-rwiGM4Joa_c/WxzvAfUhmrI/AAAAAAAC9nc/uLI8VeVxa7w3L7oGOGcvk-O3Psw0LVaIQCLcBGAs/s640/Colemak_fingers.png" title="Colemak layout colour-coded by which finger to use" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
Here are my tips on learning the Colemak keyboard layout to reduce finger joint pain. From my experience I also compare it to the regular QWERTY layout. [3 minutes]&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
While I can type simple lower-case words at over 100 words per minute on a QWERTY keyboard, the typing all day is causing finger strain, so I sought a keyboard layout to minimises finger motion. Colemak is that layout.&lt;br /&gt;
&lt;h2&gt;
QWERTY is a pain&lt;/h2&gt;
The QWERTY layout has two design goals (1) to be able to type "typewriter" on the top row for demonstrations, and (2) prevent typewriter keys from jamming. &amp;nbsp;&amp;nbsp;Goal (1) puts frequent keys like t,e,r and i on the top row, and goal (2) results in a lot of "same-finger jumping" where the same finger has to jump rows to type common pairs of letters - for example ed, ce, ju, im, mu, nu, mi, um, ol, lo, ki.&lt;br /&gt;
&lt;h2&gt;
Colemak to the rescue&lt;/h2&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/_rswIZalsPuc/TK27JhmBL7I/AAAAAAAACOU/oBDJIhpmlOM/s1600/C:%5Cfakepath%5CColemak_vs_qwerty.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Colemak keyboard finger change map vs QWERTY" border="0" height="220" src="https://3.bp.blogspot.com/_rswIZalsPuc/TK27JhmBL7I/AAAAAAAACOU/oBDJIhpmlOM/s640/C:%5Cfakepath%5CColemak_vs_qwerty.jpg" title="Purple=unchanged, light green = same finger, dark green = same hand, black = different hand" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
I was looking into buying a fancy ergonomic keyboard when I came across the &lt;a href="http://www.colemak.com/"&gt;Colemak&lt;/a&gt; website. Colemak is a keyboard layout designed in 2006, and partially computer-optimised.  It claims to more halve the typing effort versus QWERTY, about the same as Dvorak layout but with features that make it easier to learn:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Home row keys (arstdhneio) put the 10 most frequent letters in English under your fingertips&lt;/li&gt;
&lt;li&gt;Pinky finger is used only rarely&lt;/li&gt;
&lt;li&gt;Loads of "hand-roll combos" where you type 2, 3 or even 4 keys in one smooth motion.&lt;/li&gt;
&lt;li&gt;10 keys stay where they are in QWERTY (namely Q,A,Z,X,C,V,B,H,M)&lt;/li&gt;
&lt;li&gt;Most windows keyboard shortcuts stay the same (see above)&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;All keys except E and P are typed with the same finger or same hand as on QWERTY.&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Learning Colemak&lt;/h2&gt;
Colemak can be learnt using &lt;a href="http://typefaster.sourceforge.net/"&gt;TypeFaster&lt;/a&gt; on Windows or &lt;a href="http://ktouch.sourceforge.net/"&gt;KTouch&lt;/a&gt; on Linux or the &lt;a href="http://keybr.com/welcome"&gt;Keybr&lt;/a&gt; Flash applet, and there are lessons for download from the &lt;a href="http://www.colemak.com/"&gt;www.colemak.com&lt;/a&gt;.&amp;nbsp; Some software can personalize the lesson to work on your slowest or least-accurated keys. Since Colemak is for touch-typing, so you are not supposed to physically re-label your keyboard.&amp;nbsp;Early on you may want to keep cheat sheet handy.&lt;br /&gt;
&lt;br /&gt;
After 4 days switched my layout to Colemak for work... which was annoying as my speed was under 20 words per minute and accuracy was low and I had to relearn some shortcuts. After 7 days I hit 30 words per minute. After a month I was back up to about 80 words a minute. It still takes me a minute to switch mentally between QWERTY and Colemak, during which time I make more mistakes on the keys that differ.&lt;br /&gt;
&lt;br /&gt;
Masochists may be interested in the &lt;a href="http://mkweb.bcgsc.ca/carpalx/?tnwclr"&gt;TNWCLR&lt;/a&gt;&amp;nbsp;layout, which is intended to increases typing effort 112% over QWERTY.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;In 2013 I switched back to QWERTY as it's everywhere and my joint pain had gone away&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Do you have any views on alternative keyboard layouts? Did you try Colemak, what did you think?&lt;/i&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://2.bp.blogspot.com/-rwiGM4Joa_c/WxzvAfUhmrI/AAAAAAAC9nc/uLI8VeVxa7w3L7oGOGcvk-O3Psw0LVaIQCLcBGAs/s72-c/Colemak_fingers.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>How to write Bad Python</title><link>http://blog.grahampoulter.com/2009/01/bad-python.html</link><category>opinions</category><category>technical</category><author>noreply@blogger.com (Graham Poulter)</author><pubDate>Thu, 29 Jan 2009 11:34:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-22557003.post-3286421113737244403</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://3.bp.blogspot.com/-cGRyfwY__RY/WxzvP6USvvI/AAAAAAAC9ng/r9dJhreJ4Aw89W98SCc0-KixTrnCJ1-XgCLcBGAs/s1600/800px-Python-logo-notext.svg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="The Python logo" border="0" data-original-height="800" data-original-width="800" height="400" src="https://3.bp.blogspot.com/-cGRyfwY__RY/WxzvP6USvvI/AAAAAAAC9ng/r9dJhreJ4Aw89W98SCc0-KixTrnCJ1-XgCLcBGAs/s400/800px-Python-logo-notext.svg.png" title="This is the good kind of Python" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;A controversial post about bad code that I observed on an unnamed Python project, in which I describe outdated idioms, Java-style code, and bad programming practices. [3 minutes]&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Fun fact: an earlier version of this post (which also disparaged the programmers - not cool) made the Reddit front page after someone posted it to &lt;a href="https://old.reddit.com/r/programming/comments/7tlnh/bad_python/"&gt;r/programming&lt;/a&gt;, granting me 15 minutes of internet fame. I take it that controversial opinions get more attention that bland facts.&lt;br /&gt;
&lt;h2&gt;The Kinds of Bad Python&lt;/h2&gt;&lt;div&gt;I spent a day re-doing about 30% of the functionallity of 8,600 lines of elses Java-style Python into 200 lines of cleaner Python that is also more flexible. I've observed a few major kinds of code I would call "Bad Python":&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="background-color: white;"&gt;&lt;b&gt;"Bad Python" is often "Old Python"&lt;/b&gt;: using only the conveniences available in Python before 2.4/2.5. In a fast-moving language, the old ways are often going to look bad.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background-color: white;"&gt;&lt;b&gt;"Bad Python" is often "Java Python"&lt;/b&gt;: Python written in Java idioms. It's poor form to write in one language using the idioms of another, and forgoing the benefits of&lt;/span&gt;&amp;nbsp;dynamic typing, first-class functions, native iterators, properties, and so forth&lt;/li&gt;
&lt;li&gt;&lt;span style="background-color: white;"&gt;&lt;b&gt;"Bad Python" is often "Bad Programming"&lt;/b&gt;: many of the practices would be poor form in any programming language.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;h2&gt;Specific Examples&lt;/h2&gt;Some specific examples of Bad Python eyesores:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Accessor methods such as getDistance() and setDistance(), instead of using an attribute. In Python, attributes can be turned into properties later, preserving the class interface.&lt;/li&gt;
&lt;li&gt;Asserting the type of every argument and returned value, taking up maybe 30% of the code itself and 80% of the unit test code.  Checking is usually pointless because the interpreter itself will let you know if &lt;i&gt;someduck&lt;/i&gt; didn't &lt;i&gt;.quack()&lt;/i&gt; like a duck, and makes the code less flexible. &lt;/li&gt;
&lt;li&gt;Using super-private attributes for everything, so far as to use  double-underscores on each side, which are supposed to be reserved for language features.&lt;/li&gt;
&lt;li&gt;Dozens of customising parameters in constructors, such as &lt;i&gt;reversed&lt;/i&gt; and &lt;i&gt;strip &lt;/i&gt;and &lt;i&gt;maxlen&lt;/i&gt; - when passing in a general &lt;i&gt;transform&lt;/i&gt; function would be so much more elegant and could do so much more than just reverse the strings that the class works with. &lt;/li&gt;
&lt;li&gt;Using delegates where first-class function will do.&lt;/li&gt;
&lt;li&gt;Wrapping things classes that offer no more behavior than a dict or a tuple, while adding a whole lot of intermediate code. &lt;i&gt;namedtuple&lt;/i&gt;&amp;nbsp;could help there.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Java Patterns in Python&lt;/h2&gt;Some Bad Python comes from using certain Design Patterns that can in Python be expressed in one-line idioms, not worth writing a chapter about. Singleton Pattern? Write a module. Iterator? It's fundamental to the language. Factory Pattern? Write a function &lt;i&gt;make_foo,&lt;/i&gt; and substitute it with&amp;nbsp;&lt;i&gt;make_dummy_foo&lt;/i&gt; in tests. Flyweight Objects and Command Dispatch? Use a dictionary. A good resources is&amp;nbsp;&lt;a href="http://www.suttoncourtenay.org.uk/duncan/accu/pythonpatterns.html"&gt;Python Patterns&lt;/a&gt;&amp;nbsp;for patterns specific to the language. I think it's too common to assume that the Gang-of-Four Design Patterns apply to every language, not just Java/C++/C#.&lt;br /&gt;
&lt;h2&gt;Bad Programming&lt;/h2&gt;One can of course write bad code in any language, Python included, by doing:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Vague and misleading identifiers (topic of future post)&lt;/li&gt;
&lt;li&gt;Massive 'god' classes&lt;/li&gt;
&lt;li&gt;Source files having no discernable structure&lt;/li&gt;
&lt;li&gt;Awkward decompositions of function&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Forces similar logic to be repeated in dozens of places&lt;/li&gt;
&lt;li&gt;Prevents parts from being reused e.g. in unit tests&lt;/li&gt;
&lt;li&gt;Prevents dependencies from being stubbed out e.g. in unit tests&lt;/li&gt;
&lt;li&gt;Mixing logic with orthogonal aspects like error-handling and logging for a harder-to-maintain mess.&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;h2&gt;Further Reading&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://dirtsimple.org/2004/12/python-is-not-java.html"&gt;Python is not Java&lt;/a&gt; (a related rant about using Java idioms in Python)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html"&gt;Idiomatic Python&lt;/a&gt; (if you want examples of idioms in Python) &lt;/li&gt;
&lt;li&gt;&lt;a href="http://oreilly.com/catalog/9780596007973/"&gt;Python Cookbook&lt;/a&gt; (preview online at &lt;a href="http://my.safaribooksonline.com/0596007973"&gt;Safari Books&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://queue.acm.org/detail.cfm?id=1039535"&gt;How not to write FORTRAN in any language&lt;/a&gt; especially on readability and how a language can help and hinder good design.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;P.S. you might also like my opinions on &lt;a href="http://blog.grahampoulter.com/2008/12/code-generation-vs-metaprogramming-in.html"&gt;code generation versus metaclasses&lt;/a&gt;, or see how to &lt;a href="http://blog.grahampoulter.com/2011/09/show-current-git-bazaar-or-mercurial.html"&gt;show the current branch in your Bash prompt&lt;/a&gt; when coding.&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://3.bp.blogspot.com/-cGRyfwY__RY/WxzvP6USvvI/AAAAAAAC9ng/r9dJhreJ4Aw89W98SCc0-KixTrnCJ1-XgCLcBGAs/s72-c/800px-Python-logo-notext.svg.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">19</thr:total></item><item><title>How to optimize Quake 3 autoexec.cfg</title><link>http://blog.grahampoulter.com/2009/01/quake-3-config.html</link><category>hacks</category><category>technical</category><author>noreply@blogger.com (Graham Poulter)</author><pubDate>Sat, 10 Jan 2009 13:01:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-22557003.post-6983658403844752050</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://2.bp.blogspot.com/-7Sgnz7BRS6w/Wxzve32Sp1I/AAAAAAAC9no/5elvfxHFITMX8BK99UkRaYGERx2zL0aJgCLcBGAs/s1600/quake-3-logo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="The Quake 3 logo" border="0" data-original-height="900" data-original-width="1600" height="360" src="https://2.bp.blogspot.com/-7Sgnz7BRS6w/Wxzve32Sp1I/AAAAAAAC9no/5elvfxHFITMX8BK99UkRaYGERx2zL0aJgCLcBGAs/s640/quake-3-logo.jpg" title="" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Here I share my optimized autoexec.cfg configuration for Quake 3. Compared to the defaults it offers several clear advantages for LAN gaming. [2 minutes]&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
I've been playing Quake (and Doom) since the originals came out, but struggled at first with after-hours Quake 3 at the office, for a number of reasons:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Poor Visibility&lt;/b&gt;: can't see through the gibs and shells.  It felt like I was playing paintball.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Mouse sensitivity&lt;/b&gt;: 8 times the default, jumping all over the place.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Keybindings: &lt;/b&gt;annoying trying to change weapons or zoom.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Camouflage: &lt;/b&gt;The blue "team" model really stands out (many people use "bones" for the best camouflage)&lt;/li&gt;
&lt;/ul&gt;To help, I've developed this &lt;a href="https://gist.github.com/gpoulter/d424c0f535e77feedcc4b851a70239bb"&gt;autoexec.cfg&lt;/a&gt; (follow link) with the following tweaks:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Visibility&lt;/b&gt;: turns off muzzle flash, shells, gun model, gibs/blood.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Audibility&lt;/b&gt;: turns off level music to hear the other players.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Distractions&lt;/b&gt;: adds toggles for the gun model and HUD to clear distractions.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Mouse&lt;/b&gt;: Tunes mouse sensitivity just high enough to allow a 180-degree turn in one flick.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Telescopic sight&lt;/b&gt;: sets up multiple zoom levels via field of view.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Steadiness&lt;/b&gt;: turns off bob/roll for slightly steadier crosshair.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Crosshair&lt;/b&gt;: uses the circle + dot crosshair (cross can obscure small targets).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Weapon cycling&lt;/b&gt;: shortcuts for both keyboard and mousewheel cycling.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;Embedding the full &lt;a href="https://gist.github.com/gpoulter/d424c0f535e77feedcc4b851a70239bb"&gt;autoexec.cfg&lt;/a&gt; below:&lt;br /&gt;
&lt;script src="https://gist.github.com/gpoulter/d424c0f535e77feedcc4b851a70239bb.js"&gt;&lt;/script&gt;&lt;br /&gt;
P.S. After optimizing your Quake config, try &lt;a href="http://blog.grahampoulter.com/2009/03/qwerty-layout-dumped-in-favour-of-low.html"&gt;optimizing your keyboard with the Colemak layout&lt;/a&gt;.&lt;/div&gt;&lt;i&gt;Do you have any favourite Quake 3 configuration tweaks? Let me know in the comments below!&lt;/i&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://2.bp.blogspot.com/-7Sgnz7BRS6w/Wxzve32Sp1I/AAAAAAAC9no/5elvfxHFITMX8BK99UkRaYGERx2zL0aJgCLcBGAs/s72-c/quake-3-logo.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></item><item><title>When to use code generation vs metaclasses</title><link>http://blog.grahampoulter.com/2008/12/code-generation-vs-metaprogramming-in.html</link><category>opinions</category><category>technical</category><author>noreply@blogger.com (Graham Poulter)</author><pubDate>Tue, 23 Dec 2008 12:07:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-22557003.post-7093699350083329830</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_rswIZalsPuc/SXO1zFjJbKI/AAAAAAAABAk/fPqJ_i76tiQ/s1600/activerecord.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Ruby example of an ActiveRecord class" border="0" height="120" src="https://4.bp.blogspot.com/_rswIZalsPuc/SXO1zFjJbKI/AAAAAAAABAk/fPqJ_i76tiQ/s400/activerecord.png" title="I normally use Python, but is the image for ActiveRecord" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;In which I compare the advantages of two kinds metaprogramming: with metaclasses at runtime, versus templated code generation prior to compilation. [2 minutes]&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
In the &lt;a href="http://martinfowler.com/eaaCatalog/activeRecord.html"&gt;Active Record pattern&lt;/a&gt; a class wraps a row in a database table or view, encapsulates the database access, and adds domain logic on that data. Writing in Java and C# one often does metaprogramming in the form of templates to generate code for each table: you would see a template and multiple generated class files for each table. In more-dynamic interpreted languages like Python and Ruby languages, one typically instantiates a specialised class for each table at runtime based off of a metaclass, so in the source code you only see the metaclass and possibly instantiations.&lt;br /&gt;
&lt;br /&gt;
Let's look at the relative advantages:&lt;br /&gt;
&lt;h3&gt;Advantages of metaclasses&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Size: &lt;/b&gt;metaclasses yield a smaller source control tree. With generated classes, one might find most of the codebase consists of generated files.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Locality&lt;/b&gt;: metaclass changes affect only small sections of code,&amp;nbsp;while code generation can change thousands of files for a small change to the template or database schema.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Edit speed&lt;/b&gt;: the edit-run cycle is quicker than a generate-compile-run cycle, a typical&amp;nbsp; interpreted language advantage.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Advantages of code generation&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Execution speed&lt;/b&gt;: code generation has no runtime overhead, compared to the generalized metaclass logic.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Type checking&lt;/b&gt;: compilers can statically check the method calls and types against generated code on disk, but not against classes that only appear at runtime.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Editor assistance&lt;/b&gt;: similarly IDEs can provide completions and contextual help for generated code, not normally for classes that appear at runtime.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Debugging:&lt;/b&gt; is more straightforward in generated code than in metaclass methods.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Generality&lt;/b&gt;: templated code generation seems to generalise more easily than metaclasses (not limited to classes), so sometimes you have to do it anyway.&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Code generators all the way down&lt;/h3&gt;Code generation can be seen as using a higher level language to output code in a lower level one. In that sense, compilers are code generators of assembly and machine language, interpreters are code generators of bytecode, and what we usually call "code generators" are template languages that generate high-level language code. So everyone is using code generation, but should one be generating code for the language that one is also coding in right now?&lt;br /&gt;
&lt;br /&gt;
P.S. I also have some views on &lt;a href="http://blog.grahampoulter.com/2009/01/bad-python.html"&gt;how to write bad code in Python&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;What are your views on (runtime) metaprogramming versus code generation?&lt;/i&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://4.bp.blogspot.com/_rswIZalsPuc/SXO1zFjJbKI/AAAAAAAABAk/fPqJ_i76tiQ/s72-c/activerecord.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item></channel></rss>