15 September 2012

Interpreting the Bible


Today I got asked "Is it possible to accurately channel the bible, given that there are so many different interpretations available? Genuine question, not flamebait." Thought I'd repost the reply here.

Sure, fair question. Assuming it isn't about translations or source of text. (But if it is, these are built on evidence-based processes using thousands of historical manuscripts, etc. Be suspicious of anyone says that only 'their' translation is correct). Different translations often serve different purpose (e.g. with varying tradeoffs between readability vs more literal translation of original text, which have less readable grammatical structures)

Facetiously, there are so many different interpretations because people try to interpret it, rather than just read it. Reading the Bible is a comprehension exercise, like reading the paper, and for the most part it's pretty clear what it says. Unclear parts often become clear once more context is read; or when historical customs/geography/sayings are uncovered (often in the footnotes). Some parts are just plain unclear, but these tend not to be about topics that catch the public eye. Given it's a book to be understood by all people in all times, I wonder if some parts just aren't meant for us now.

Unsurprising, not everyone who presents an 'interpretation' is doing so with honest intentions. Many try to use the Bible in the same way politicians use statistics: for support, rather than illumination. Reasons include:

  • to deceive others
  • to deceive themselves
  • to self promote by trying to value-add


Some ways that people arrive at the wrong meaning include:

  1. like most documents, it's pretty easy to make it say the exact opposite of what it clearly says by quoting out of context; and you see a fair bit of that.
  2. interpreting descriptive text as prescriptive text. (e.g. Abraham did this or that, but that doesn't mean that he was right to do it, let alone that we should do it).
  3. trying to apply Old Testament rules to modern times. The Bible is clear that most don't apply now, along with why they did then, but don't after Jesus.
  4. claiming it says something on a topic that it is silent on. (e.g. should children be baptised? some say yes, some say no, the Bible doesn't really say at all).
  5. try to interpret text that is clearly poetry, parable, dream or metaphore, as literal. With a bit of context it's usually pretty easy to tell which is which.


Watching someone put a clearly wrong interpretation with a clear agenda is about as frustrating as watching people get up and say that climate change isn't happening. :)

p.s. I can't remember where I heard some of these analogies, but felt should at least say they're not original.

3 May 2012

MSBuild Task to generate hash of files

Here's a handy inline MSBuild task to take a bunch of files and generate a hash. I used it to generate a hash of source files in order to determine if an exe has really been changed (given that exe's compile to distinct files each time even if the source hasn't changed).

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<UsingTask TaskName="GenerateHash" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<InputFiles ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true" />
<OutputFile ParameterType="System.String" Required="true" />
</ParameterGroup>
<Task>
<Using Namespace="System.IO" />
<Using Namespace="System.Linq" />
<Using Namespace="System.Security.Cryptography" />
<Code Type="Fragment" Language="cs"><![CDATA[
using (var ms = new MemoryStream())
using (var md5 = MD5.Create())
{
foreach (var item in InputFiles)
{
string path = item.ItemSpec;
using (FileStream stream = new FileStream(path, FileMode.Open))
{
var fileHash = md5.ComputeHash(stream);
ms.Write(fileHash, 0, fileHash.Length);
}
}
ms.Flush();
ms.Position = 0;
var dirHash = md5.ComputeHash(ms);
using (TextWriter w = new StreamWriter(OutputFile, false))
{
w.WriteLine(string.Join("", dirHash.Select(b => b.ToString("x2"))));
}
}
]]></Code>
</Task>
</UsingTask>

<Target Name="Demo">
<GenerateHash InputFiles="@(SomeFiles)" OutputFile="res.txt" />
</Target>
</Project>

Inline MSBuild task to generate hash of files

Here's a handy inline MSBuild task to take a bunch of files and generate a hash. I used it to determine if two sets of source code are changed.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<UsingTask TaskName="GenerateHash" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<InputFiles ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true" />
<OutputFile ParameterType="System.String" Required="true" />
</ParameterGroup>
<Task>
<Using Namespace="System.IO" />
<Using Namespace="System.Linq" />
<Using Namespace="System.Security.Cryptography" />
<Code Type="Fragment" Language="cs"><![CDATA[
using (var ms = new MemoryStream())
using (var md5 = MD5.Create())
{
foreach (var item in InputFiles)
{
string path = item.ItemSpec;
using (FileStream stream = new FileStream(path, FileMode.Open))
{
var fileHash = md5.ComputeHash(stream);
ms.Write(fileHash, 0, fileHash.Length);
}
}
ms.Flush();
ms.Position = 0;
var dirHash = md5.ComputeHash(ms);
using (TextWriter w = new StreamWriter(OutputFile, false))
{
w.WriteLine(string.Join("", dirHash.Select(b => b.ToString("x2"))));
}
}
]]></Code>
</Task>
</UsingTask>

<Target Name="Demo">
<GenerateHash InputFiles="@(SomeFiles)" OutputFile="res.txt" />
</Target>
</Project>

11 March 2012

GoDaddy Joomla on Windows: fail

Hi GoDaddy Support,

I recently installed the Joomla application. I deployed two instances to: URIs omitted

They are both running extremely slowly. (Between 4 and 10 seconds to respond - way to slow for a web site). I haven't even set up any content on them yet. Can you please help? Why are they running so slowly?

Thanks in advance.


Support Staff Response

Dear Peter,

Thank you for contacting Online Support. I understand you installed Joomla to a Windows hosting plan. This would be why the sites are resolving slowly. If you do not have ASP elements or any other windows only content, I would recommend switching to a Linux hosting plan as these run Joomla much better. You can change your hosting Operating System by following the instructions below.

If you find that you need to switch the operating system of your hosting account, you can do so at any time.

To Switch Your Hosting Account Operating System

  • Log in to your Account Manager.Click Web Hosting.
  • Click Options next to the account you want to use.
  • Go to the Customize tab.
  • From the Plan menu, select a new hosting plan. NOTE: If you do not see the Plan menu, contact customer support.
  • Click Save Changes or Checkout, and then complete your purchase.

This change may make take up to 72 hours depending on the size of the site, the number of databases and other factors that may increase the complexity of the migration. We recommend that you do not try to FTP to your hosting account during the migration. You will receive an email message when we complete your upgrade.

NOTE: If your website contains certain advanced features, such as ASP, ASP.NET, CGI, or PHP applications and you select a hosting plan that does not support those advanced features, your website may no longer function properly after the plan change. Please make sure your website does not contain advanced features BEFORE moving to a plan that may not support them or be prepared to modify your Web content accordingly.

NOTE: If you created databases that are incompatible with the new operating system, you must delete them before proceeding. Data existing in compatible databases will be preserved.

Please let us know if we can assist you in any other way.

Sincerely,

Mike P.

Online Support


*sigh*

9 February 2012

Universal Turing Snake

Random thought for the day: How hard would it be to make a mechanical Universal Turing Machine that used an arbitrarily long Rubik's snake as the tape? ...out of Lego... Hmm...

ShouldSerialize

Sometimes features are staring at you in the face, all you need to do is read the docs. Other times it really feels like things are hidden. Thanks Con for pointing me to ShouldSerializePropertyName - I did a careful look through the MSDN serialization docs in hope of finding this very feature, but didn't have any luck.

What does it do? For any given property, create a bool ShouldSerializePropertyName() method to decide if it should be included in serialization. A bit magical, but does the trick.

Why do I want this? I want to serialize an object graph to XML. But I don't want to render a container element for any empty collections. I think I'm becoming a bit of a pedent when it comes to XML.

Docs (in as much as I could be find any) are over here under Windows Form Controls.

31 January 2012

SQL Optimisation article

Thanks to Martin for pointing me to this Microsoft article on SQL optimization: Best Practices for Semantic Data Modeling for Performance and Scalability. A tightly packed and in depth look at various SQL Server optimisation techniques.