text:
namespace NLog.UnitTests
{
    using System;
    using System.Collections.Generic;
    using System.Globalization;
    using System.Linq;
    using System.IO;
    using System.IO.Compression;
    using System.Runtime.CompilerServices;
    using System.Text;
    using NLog.Common;
    using NLog.Layouts;
    using NLog.Targets;
    using Xunit;
#if !NETSTANDARD
    using Ionic.Zip;
#endif

    public abstract class NLogTestBase
    {
        protected NLogTestBase()
        {
            //reset before every test
            LogManager.ThrowExceptions = false; // Ignore any errors triggered by closing existing config
            LogManager.Configuration = null;    // Will close any existing config
            LogManager.LogFactory.ResetCandidateConfigFilePath();

            InternalLogger.Reset();
            InternalLogger.LogLevel = LogLevel.Off;
            LogManager.ThrowExceptions = true;  // Ensure exceptions are thrown by default during unit-testing
            LogManager.ThrowConfigExceptions = null;
            System.Diagnostics.Trace.Listeners.Clear();
#if !NETSTANDARD
            System.Diagnostics.Debug.Listeners.Clear();
#endif
        }

        protected void AssertDebugCounter(string targetName, int val)
        {
            Assert.Equal(val, GetDebugTarget(targetName).Counter);
        }

        protected void AssertDebugLastMessage(string targetName, string msg)
        {
            Assert.Equal(msg, GetDebugLastMessage(targetName));
        }

        protected void AssertDebugLastMessage(string targetName, string msg, LogFactory logFactory)
        {
            Assert.Equal(msg, GetDebugLastMessage(targetName, logFactory));
        }

        protected void AssertDebugLastMessageContains(string targetName, string msg)
        {
            string debugLastMessage = GetDebugLastMessage(targetName);
            Assert.True(debugLastMessage.Contains(msg),
                $"Expected to find '{msg}' in last message value on '{targetName}', but found '{debugLastMessage}'");
        }

        protected string GetDebugLastMessage(string targetName)
        {
            return GetDebugLastMessage(targetName, LogManager.LogFactory);
        }

        protected string GetDebugLastMessage(string targetName, LogFactory logFactory)
        {
            return GetDebugTarget(targetName, logFactory).LastMessage;
        }

        public DebugTarget GetDebugTarget(string targetName)
        {
            return GetDebugTarget(targetName, LogManager.LogFactory);
        }

        protected DebugTarget GetDebugTarget(string targetName, LogFactory logFactory)
        {
            return LogFactoryTestExtensions.GetDebugTarget(targetName, logFactory.Configuration);
        }

        protected void AssertFileContentsStartsWith(string fileName, string contents, Encoding encoding)
        {
            FileInfo fi = new FileInfo(fileName);
            if (!fi.Exists)
                Assert.True(false, "File '" + fileName + "' doesn't exist.");

            byte[] encodedBuf = encoding.GetBytes(contents);

            byte[] buf = File.ReadAllBytes(fileName);
            Assert.True(encodedBuf.Length <= buf.Length,
                $"File:{fileName} encodedBytes:{encodedBuf.Length} does not match file.content:{buf.Length}, file.length = {fi.Length}");

            for (int i = 0; i < encodedBuf.Length; ++i)
            {
                if (encodedBuf[i] != buf[i])
                    Assert.True(encodedBuf[i] == buf[i],
                        $"File:{fileName} content mismatch {(int)encodedBuf[i]} <> {(int)buf[i]} at index {i}");
            }
        }

        protected void AssertFileContentsEndsWith(string fileName, string contents, Encoding encoding)
        {
            if (!File.Exists(fileName))
                Assert.True(false, "File '" + fileName + "' doesn't exist.");

            string fileText = File.ReadAllText(fileName, encoding);
            Assert.True(fileText.Length >= contents.Length);
            Assert.Equal(contents, fileText.Substring(fileText.Length - contents.Length));
        }

        protected class CustomFileCompressor : IArchiveFileCompressor
        {
            public void CompressFile(string fileName, string archiveFileName)
            {
                string entryName = Path.GetFileNameWithoutExtension(archiveFileName) + Path.GetExtension(fileName);
                CompressFile(fileName, archiveFileName, entryName);
            }

            public void CompressFile(string fileName, string archiveFileName, string entryName)
            {
#if !NETSTANDARD
                using (var zip = new Ionic.Zip.ZipFile())
                {
                    ZipEntry entry = zip.AddFile(fileName);
                    entry.FileName = entryName;
                    zip.Save(archiveFileName);
                }
#endif
            }
        }

#if NET35 || NET40
        protected void AssertZipFileContents(string fileName, string expectedEntryName, string contents, Encoding encoding)
        {
            if (!File.Exists(fileName))
                Assert.True(false, "File '" + fileName + "' doesn't exist.");

            byte[] encodedBuf = encoding.GetBytes(contents);

            using (var zip = new Ionic.Zip.ZipFile(fileName))
            {
                Assert.Equal(1, zip.Count);
                Assert.Equal(encodedBuf.Length, zip[0].UncompressedSize);

                byte[] buf = new byte[zip[0].UncompressedSize];
                using (var fs = zip[0].OpenReader())
                {
                    fs.Read(buf, 0, buf.Length);
                }

                for (int i = 0; i < buf.Length; ++i)
                {
                    Assert.Equal(encodedBuf[i], buf[i]);
                }
            }
        }
#else
        protected void AssertZipFileContents(string fileName, string expectedEntryName, string contents, Encoding encoding)
        {
            FileInfo fi = new FileInfo(fileName);
            if (!fi.Exists)
                Assert.True(false, "File '" + fileName + "' doesn't exist.");

            byte[] encodedBuf = encoding.GetBytes(contents);
            using (var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
            using (var zip = new ZipArchive(stream, ZipArchiveMode.Read))
            {
                Assert.Single(zip.Entries);
                Assert.Equal(expectedEntryName, zip.Entries[0].Name);
                Assert.Equal(encodedBuf.Length, zip.Entries[0].Length);

                byte[] buf = new byte[(int)zip.Entries[0].Length];
                using (var fs = zip.Entries[0].Open())
                {
                    fs.Read(buf, 0, buf.Length);
                }

                for (int i = 0; i < buf.Length; ++i)
                {
                    Assert.Equal(encodedBuf[i], buf[i]);
                }
            }
        }
#endif

        protected void AssertFileContents(string fileName, string expectedEntryName, string contents, Encoding encoding)
        {
            AssertFileContents(fileName, contents, encoding, false);
        }

        protected void AssertFileContents(string fileName, string contents, Encoding encoding)
        {
            AssertFileContents(fileName, contents, encoding, false);
        }

        protected void AssertFileContents(string fileName, string contents, Encoding encoding, bool addBom)
        {
            FileInfo fi = new FileInfo(fileName);
            if (!fi.Exists)
                Assert.True(false, "File '" + fileName + "' doesn't exist.");

            byte[] encodedBuf = encoding.GetBytes(contents);

            //add bom if needed
            if (addBom)
            {
                var preamble = encoding.GetPreamble();
                if (preamble.Length > 0)
                {
                    //insert before
                    encodedBuf = preamble.Concat(encodedBuf).ToArray();
                }
            }

            byte[] buf;
            using (var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete))
            {
                int index = 0;
                int count = (int)fs.Length;
                buf = new byte[count];
                while (count > 0)
                {
                    int n = fs.Read(buf, index, count);
                    if (n == 0)
                        break;
                    index += n;
                    count -= n;
                }
            }

            Assert.True(encodedBuf.Length == buf.Length,
                $"File:{fileName} encodedBytes:{encodedBuf.Length} does not match file.content:{buf.Length}, file.length = {fi.Length}");

            for (int i = 0; i < buf.Length; ++i)
            {
                if (encodedBuf[i] != buf[i])
                    Assert.True(encodedBuf[i] == buf[i],
                        $"File:{fileName} content mismatch {(int)encodedBuf[i]} <> {(int)buf[i]} at index {i}");
            }
        }

        protected void AssertFileContains(string fileName, string contentToCheck, Encoding encoding)
        {
            if (contentToCheck.Contains(Environment.NewLine))
                Assert.True(false, "Please use only single line string to check.");

            FileInfo fi = new FileInfo(fileName);
            if (!fi.Exists)
                Assert.True(false, "File '" + fileName + "' doesn't exist.");

            using (TextReader fs = new StreamReader(fileName, encoding))
            {
                string line;
                while ((line = fs.ReadLine()) != null)
                {
                    if (line.Contains(contentToCheck))
                        return;
                }
            }

            Assert.True(false, "File doesn't contains '" + contentToCheck + "'");
        }

        protected void AssertFileNotContains(string fileName, string contentToCheck, Encoding encoding)
        {
            if (contentToCheck.Contains(Environment.NewLine))
                Assert.True(false, "Please use only single line string to check.");

            FileInfo fi = new FileInfo(fileName);
            if (!fi.Exists)
                Assert.True(false, "File '" + fileName + "' doesn't exist.");

            using (TextReader fs = new StreamReader(fileName, encoding))
            {
                string line;
                while ((line = fs.ReadLine()) != null)
                {
                    if (line.Contains(contentToCheck))
                        Assert.False(true, "File contains '" + contentToCheck + "'");
                }
            }
        }

        protected string StringRepeat(int times, string s)
        {
            StringBuilder sb = new StringBuilder(s.Length * times);
            for (int i = 0; i < times; ++i)
                sb.Append(s);
            return sb.ToString();
        }

        /// <summary>
        /// Render layout <paramref name="layout"/> with dummy <see cref="LogEventInfo" />and compare result with <paramref name="expected"/>.
        /// </summary>
        protected static void AssertLayoutRendererOutput(Layout layout, string expected)
        {
            var logEventInfo = LogEventInfo.Create(LogLevel.Info, "loggername", "message");

            AssertLayoutRendererOutput(layout, logEventInfo, expected);
        }

        /// <summary>
        /// Render layout <paramref name="layout"/> with <paramref name="logEventInfo"/> and compare result with <paramref name="expected"/>.
        /// </summary>
        protected static void AssertLayoutRendererOutput(Layout layout, LogEventInfo logEventInfo, string expected)
        {
            layout.Initialize(null);
            string actual = layout.Render(logEventInfo);
            layout.Close();
            Assert.Equal(expected, actual);
        }

#if !NET35 && !NET40
        /// <summary>
        /// Get line number of previous line.
        /// </summary>
        protected int GetPrevLineNumber([CallerLineNumber] int callingFileLineNumber = 0)
        {
            return callingFileLineNumber - 1;
        }
#else
        /// <summary>
        /// Get line number of previous line.
        /// </summary>
        protected int GetPrevLineNumber()
        {
            //fixed value set with #line 100000
            return 100001;
        }
#endif

        protected string RunAndCaptureInternalLog(SyncAction action, LogLevel internalLogLevel)
        {
            var stringWriter = new Logger();
            var orgWriter = InternalLogger.LogWriter;
            var orgTimestamp = InternalLogger.IncludeTimestamp;
            var orgLevel = InternalLogger.LogLevel;
            try
            {
                InternalLogger.LogWriter = stringWriter;
                InternalLogger.IncludeTimestamp = false;
                InternalLogger.LogLevel = internalLogLevel;
                action();
            }
            finally
            {
                InternalLogger.LogWriter = orgWriter;
                InternalLogger.IncludeTimestamp = orgTimestamp;
                InternalLogger.LogLevel = orgLevel;
            }

            return stringWriter.ToString();
        }
        /// <summary>
        /// To handle unstable integration tests, retry if failed
        /// </summary>
        /// <param name="tries"></param>
        /// <param name="action"></param>
        protected void RetryingIntegrationTest(int tries, Action action)
        {
            int tried = 0;
            while (tried < tries)
            {
                try
                {
                    tried++;
                    action();
                    return; //success
                }
                catch (Exception)
                {
                    if (tried >= tries)
                    {
                        throw;
                    }
                }

            }
        }

        /// <summary>
        /// This class has to be used when outputting from the InternalLogger.LogWriter.
        /// Just creating a string writer will cause issues, since string writer is not thread safe.
        /// This can cause issues when calling the ToString() on the text writer, since the underlying stringbuilder
        /// of the textwriter, has char arrays that gets fucked up by the multiple threads.
        /// this is a simple wrapper that just locks access to the writer so only one thread can access
        /// it at a time.
        /// </summary>
        private class Logger : TextWriter
        {
            private readonly StringWriter writer = new StringWriter();

            public override Encoding Encoding => writer.Encoding;

#if NETSTANDARD1_5
            public override void Write(char value)
            {
                lock (this.writer)
                {
                    this.writer.Write(value);
                }
            }
#endif

            public override void Write(string value)
            {
                lock (writer)
                {
                    writer.Write(value);
                }
            }

            public override void WriteLine(string value)
            {
                lock (writer)
                {
                    writer.WriteLine(value);
                }
            }

            public override string ToString()
            {
                lock (writer)
                {
                    return writer.ToString();
                }
            }
        }

        /// <summary>
        /// Creates <see cref="CultureInfo"/> instance for test purposes
        /// </summary>
        /// <param name="cultureName">Culture name to create</param>
        /// <remarks>
        /// Creates <see cref="CultureInfo"/> instance with non-userOverride
        /// flag to provide expected results when running tests in different
        /// system cultures(with overriden culture options)
        /// </remarks>
        protected static CultureInfo GetCultureInfo(string cultureName)
        {
            return new CultureInfo(cultureName, false);
        }

        /// <summary>
        /// Are we running on Linux environment or Windows environemtn ?
        /// </summary>
        /// <returns>true when something else than Windows</returns>
        protected static bool IsLinux()
        {
            return !NLog.Internal.PlatformDetector.IsWin32;
        }

        /// <summary>
        /// Are we running on AppVeyor?
        /// </summary>
        /// <returns></returns>
        protected static bool IsAppVeyor()
        {
            var val = Environment.GetEnvironmentVariable("APPVEYOR");
            return val != null && val.Equals("true", StringComparison.OrdinalIgnoreCase);
        }

        public delegate void SyncAction();

        public class NoThrowNLogExceptions : IDisposable
        {
            private readonly bool throwExceptions;

            public NoThrowNLogExceptions()
            {
                throwExceptions = LogManager.ThrowExceptions;
                LogManager.ThrowExceptions = false;
            }

            public void Dispose()
            {
                LogManager.ThrowExceptions = throwExceptions;
            }
        }

        public sealed class InternalLoggerScope : IDisposable
        {
            private readonly TextWriter oldConsoleOutputWriter;
            public StringWriter ConsoleOutputWriter { get; private set; }
            private readonly TextWriter oldConsoleErrorWriter;
            public StringWriter ConsoleErrorWriter { get; private set; }
            private readonly LogLevel globalThreshold;
            private readonly bool throwExceptions;
            private readonly bool? throwConfigExceptions;

            public InternalLoggerScope(bool redirectConsole = false)
            {
                InternalLogger.LogLevel = LogLevel.Info;

                if (redirectConsole)
                {
                    ConsoleOutputWriter = new StringWriter() { NewLine = "\n" };
                    ConsoleErrorWriter = new StringWriter() { NewLine = "\n" };

                    oldConsoleOutputWriter = Console.Out;
                    oldConsoleErrorWriter = Console.Error;

                    Console.SetOut(ConsoleOutputWriter);
                    Console.SetError(ConsoleErrorWriter);
                }

                globalThreshold = LogManager.GlobalThreshold;
                throwExceptions = LogManager.ThrowExceptions;
                throwConfigExceptions = LogManager.ThrowConfigExceptions;
            }

            public void Dispose()
            {
                var logFile = InternalLogger.LogFile;

                InternalLogger.Reset();
                LogManager.GlobalThreshold = globalThreshold;
                LogManager.ThrowExceptions = throwExceptions;
                LogManager.ThrowConfigExceptions = throwConfigExceptions;

                if (ConsoleOutputWriter != null)
                    Console.SetOut(oldConsoleOutputWriter);
                if (ConsoleErrorWriter != null)
                    Console.SetError(oldConsoleErrorWriter);

                if (!string.IsNullOrEmpty(InternalLogger.LogFile))
                {
                    if (File.Exists(InternalLogger.LogFile))
                        File.Delete(InternalLogger.LogFile);
                }

                if (!string.IsNullOrEmpty(logFile) && logFile != InternalLogger.LogFile)
                {
                    if (File.Exists(logFile))
                        File.Delete(logFile);
                }
            }
        }

        protected static void AssertContainsInDictionary<TKey, TValue>(IDictionary<TKey, TValue> dictionary, TKey key, TValue value)
        {
            Assert.Contains(key, dictionary);
            Assert.Equal(value, dictionary[key]);
        }
    }
}

redpajama_set_name: RedPajamaGithub


Mr. Dervish Alley, Indian Shipping Agent, 10 November 1906, courtesy of Public Record Office Victoria, Victorian Archives Centre.
Letter bearing the stamp of Mr Dervish Alley requesting permission for a Mahommedan procession through city streets on 17 or 18 November 1906.
Letter, typewritten in blue ink. Letterhead itself is merely the address of the sender, right-aligned. However, the signature is followed by a purple stamp reading "Mr Dervish Alley, Indian Shipping Agent", which incorporates a crescent moon motif with a star on each side.


text:
The Glencarron Lodge Stalkers' Paths
By David Jarman
a Powerpoint/pdf slideset accompanies this blogpost, providing a preliminary photo-documentation of the paths, with background history.
The networks of stalkers' paths created by the Highland sporting estates from their advent in the earlier 19th century and into the 20th century have received remarkably little attention from historians or archaeologists. Yet they transformed access into glens and hills where formerly no made roads or ways had existed, and left persistent marks on the landscape. A recent NOSAS Report (2021) summarises this 'stalkerpath phenomenon' and presents the findings of a map, satellite imagery, and field study of a large swathe of the Western Highlands between Glen Cannich and Glen Carron. This study is being presented as a NOSAS Talk in March 2022.
In August 2021, a NOSAS field trip visited Glencarron Lodge to explore a pair of "stalkerpaths". This novel and simplified term, which I have coined, distinguishes paths made for sporting estate purposes from traditional worn hill paths, and from tracks made for more general use (the NOSAS Report explains the thinking behind its adoption). This pair was chosen primarily for convenience of access, as the better-preserved cases now tend to be rather remote or difficult to embark upon. They are excellent if delicate examples of the classic 'zig-zag' design, and have a fascinating history, but unfortunately they display almost none of the typical artefacts.
Glencarron Lodge stalkerpaths locus
The paths ascend the steep, smooth north side of Glen Carron above the Lodge, and are visible as faint zig-zag traces from the A890, especially in low-angle light or thin snow. They have long been abandoned and, unusually for paths close to base, bear no trace of mechanised improvement or vehicular use. They ascend from 150m asl to terminate as the slope eases at ~500m asl, but well short of the broad 550m ridge labelled Coille Bhàn. They share a brief common start, with each branch only half a kilometre long (crow-flight up the hill).
Both paths are marked on OS 1:25000 maps, if not quite to their full extents, but only the western path is shown on the 1:50000. The original start from the Lodge is blocked by a treebelt. The displaced start shown by OS is now also barred, by rhododendron jungle. The path therefore has to be located by crossing footslopes from the lay-by on the main road west of the Lodge. It is reasonably visible near the treebelt, but the bifurcation is lost in thick bracken; even in winter, it is a jink-back that is hard to identify.
The present disuse (both for sporting purposes and by walkers) is a result of vicissitudes of estate history, which must first be addressed.
This entry was posted in General Archaeology, Post Medieval, Surveying and Recording, Wester Ross and tagged Achnashellach estate, Augustus Grimble, Coille Bhàn, Coire Dubh-riabhach, Coulin Estate, Glencarron and Glenuaig Estate, Glencarron Lodge, Ordnance Survey 1st edition, Sir Ivor Guest, stalkerpath phenomenon, stalkerpaths, stalkers paths, zig-zag on December 15, 2021 by nosas.
Achnasoul and Medieval Earthwork Castles in Ross Revisited
by Meryl Marshall
The moated homestead in Achnasoul Wood (NGR NH 48808 51821 Canmore ID: 274702 Highland Council (HC) HER MHG29192) 4kms west of Muir of Ord was visited by NOSAS members on a winter walk in February 2020 just before "lockdown". The visit renewed my interest in the medieval period in this area and I began some research into the two homesteads of Davids Fort and Achnasoul with the intention of producing a blog for the NOSAS website. It wasn't long before I realized what a complex topic I had taken on so I decided to split it into two; the first part, on Davids Fort, appeared on the NOSAS website in May 2020, this piece, focusing on Achnasoul, is part two.
The eastern half of the site showing the ditch and double banks with the mound on the right – looking SE
The Achnasoul site is a ringed earthwork with a central mound which was originally interpreted as a "moated homestead" but recently confirmed (on Canmore) as a motte and bailey. It is remarkably well preserved and has been one of my favourite local sites for many years. NOSAS carried out a planetable survey on a cold, wintery day in 2005 (report on NOSAS website at: www.nosas.co.uk/siterecords.asp.) The site remains something of a mystery and seems out of place; clearly it is fortified as it has substantial double banks enclosing a ditch but yet it is situated in low lying ground with higher knolls surrounding it – not a particularly defendable position!
In 2017 the site was scheduled by Historic Environment Scotland (HES) – SM13629. The description in the scheduling document says:
The monument is a large earthwork enclosure comprising a ditch and two concentric banks which enclose a sub-circular area measuring around 43m northwest-southeast by 39m northeast-southwest within which is a raised mound. The ditch defining the enclosure measures 4m to 5m in width and 1.5m in depth and is broken by two causeways on the northwest and southeast. The outer bank of the ditch is complete and varies in height, reaching a maximum of 2m… Internally, the raised mound lies in the northern part of the enclosed area and is c25m diameter at its base, reaching a maximum height of 2m. The summit is encircled by a fragmentary bank, which encloses an area of around 11m diameter.
The size and form of the visible remains… represents a rare survival of a moated homestead of medieval date.
A processed image of the Achnasoul site from a lidar survey (contains public sector information licensed under the Open Government Licinse v3.0)
This entry was posted in Medieval, Strathconon and Ross-shire, Surveying and Recording and tagged Achnasoul, Assynt Fire and Water Project, Brahan, Castle Leod, Castlehill Henge, Conan House, David I, david's fort, Delny, Elgin motte, Fairburn Tower, Foulis Castle, Garpol Water, Inchnadamph, medieval motte, moated homestead, Mote of Urr, North of Scotland Archaeological Society, Scottish Lidar on August 8, 2021 by nosas.
Updating Groam House Museum and Highland HER Pictish records
by Tim Blackie
In 2004, I was looking over my garden wall into Rosemarkie's ancient graveyard and noticed gravediggers preparing a burial plot. Pictish sculpture has been discovered for over two centuries in the graveyard so I leapt over my wall and was told that it was an old family plot and a recently deceased woman was about to join her long-departed husband.
I asked if any pieces of stone had been recovered from the burial plot and I was pointed in the direction of a piece of dressed stone holding down the edge of the tarpaulin. After cleaning off the dirt, I noticed incised lines appearing on one side of the stone. It turned out to be a fragment of a Pictish grave marker dating to the 8th or 9th century. Carved on a finely dressed face was a quadrant of an incised ringed cross with the connecting ring and part of the shaft and one of the cross arms.
I have been interested in Pictish sculpture for many years and I co-authored 'The Sculptured Stones of Caithness' (Pinkfoot Press 1998). During my time living in Caithness, I had travelled the county examining old walls and clearance cairns near early chapel sites in the hope of discovering reused pieces of sculpture without success. I was therefore seriously chuffed to have recovered a piece of Pictish sculpture in Rosemarkie graveyard, next door to my garden! This carved stone is now on display in Groam House Museum (GHM) (https://her.highland.gov.uk/Monument/MHG38857).
Incised ringed cross grave marker fragment – © Tim Blackie
The museum is famous for its unique and rich collection of Pictish sculpture and a visit to the museum is always inspiring with the magnificent Rosemarkie cross slab taking pride of place. There are also many other pieces of sculpture on display including parts of an altar or a shrine, emphasising the importance of Rosemarkie as a major monastic settlement in early medieval times (https://her.highland.gov.uk/Monument/MHG25214).
Some of the carved stones were discovered while repairing the medieval church in 1735 when "stone coffins of rude workmanship…" were revealed "…in a vault under an ancient steeple"1, and others were found in the surrounding graveyard over the last two centuries. A number of other fragments of sculpture have been found more recently in local garden rockeries in Rosemarkie and Fortrose! The medieval church was demolished in 1821 and replaced by the current church.
1. Old Statistical Account Number XXVI Parish of Rosemarkie .
Rosemarkie medieval church and graveyard – 'Fort George, Ardesier and vicinity' 1785 map (Fortrose and Rosemarkie) © NLS https://maps.nls.uk/military/389.html
This entry was posted in Black Isle, Pictish, Surveying and Recording and tagged Canmore, Groam House Museum, Historic Environment Record, North of Scotland Archaeological Society, Old Statistical Account, Pictish carving, Pictish grave marker, Pictish sculpture, Picts Rosemarkie, Rosemarkie archaeology, Rosemarkie cross slab, Rosemarkie Monastery, The Sculptured Stones of Caithness' on July 22, 2021 by nosas.
Castle Hill "Henge" at Muir of Ord – A Controversial Structure
by Roland Spencer-Jones
Muir of Ord Golf Club may be unique in having a green on top of a scheduled ancient monument. Castle Hill, the 13th green, is an artificially modified mound, standing at the north end of a ridge, proud of the surrounding flat ground. Its perimeter is delimited by a raised bank inside of which is a circular ditch, with two gaps at NW and SE. This bank and ditch enclose an oval flat area approximately 28 m by 21 m. The ridge probably represents an alluvial glacial moraine before the end of it was subsequently modified.
There has been considerable discussion and debate in the archaeological literature over the last 350 years as to the nature of this feature, when it was created, and for what purpose. However, whatever its nature, it is special, recognised as such by being included in the list of ancient monuments in Section 12 of the Ancient Monuments Consolidation and Amendments Act 1913. This important act of scheduling was reported to the Right Honourable Lord Lovat in a registered letter dated 11th April 1957. In the scheduling documentation[1] it was called Castle Hill Fort or Henge. Scheduling is the process that "identifies, designates and provides statutory protection for monuments and archaeological sites of national importance", with damage to a scheduled site potentially incurring criminal charges. This became relevant in the early 1980's, see later.
Castle Hill in 1972 © Historic Environment Scotland: John Dewar Collection
Early Descriptions of Castle Hill
The first historical mention of this prominent feature was towards the end of the 17th century in a massive volume of archaeological recording, the Monumenta Britannica, written by probably Britain's first archaeologist, John Aubrey (Aubrey, 1665-93). In it, Aubrey records part of a letter he received in 1692 from a Dr James Garden, Professor of Theology in the King's College at Aberdeen. Aubrey had written to many local dignitaries and antiquarians throughout Northern Britain asking for information about stone monuments. He was delighted to receive this full response from Dr Garden in which the latter refers to a sacred grove thus: "I … have gotten information of two groves yet standing which are reputed sacred. One of them (which stands near to a place called Taradale in the parish of Killernen and shire of Nairn) is enclosed with a trench or dry ditch having two entries to it where the ditch is filled up or rather the ground has never been broken: all that live near it hold it as sacred, and will not cut so much as a rod out of it: my informer adds that, hard by, there is a cornfield where he conjectures there has been one of the Monuments, because in it there are several big stones such as those Monuments use to consist of, fallen down and out of order." Taradale, now Tarradale, is the name given to the settlement that later came to be called Muir of Ord once the railway arrived in 1862. Garden's description of the "sacred grove" fits nicely with the structure now called Castle Hill. Also note the description of standing stones in the vicinity, which we will come on to later.
This entry was posted in Black Isle, Bronze Age, Surveying and Recording and tagged Achnasoul, AJ Beaton, archaeology highlands, archaeology Muir of Ord, Brahan, castle hill fort, crop marks, David's Fort, defended homestead, Dr James Garden, highland henges, John Aubrey, Knock Castle, Richard Bradley, Tarradale, Thomas Kendrick, Tony Woodham on June 9, 2021 by nosas.
Kinellan Crannog, Strathpeffer
by John Wombell
Loch Kinellan, Google Earth 2015.
A few notes on Kinellan Crannog for crannog enthusiasts. We are fortunate to live at Kinellan, about 400m away from the crannog as the crow flies. In February this year Kinellan Loch froze over to a depth of 10" and we had days of glorious sunshine when local families were taking their lockdown exercise out on the ice, and we spent an afternoon on the crannog taking photos and chatting to neighbours and their children. About 15 years ago I remember leading a NOSAS visit out to the island during another big freeze.
Kinellan Crannog taken from the south shore looking north, February 2021.
Some years ago 4 NOSAS members obtained permission from Historic Scotland and the owner to remove some fallen willow that had tumbled into the loch on the south side, in order that locals and visitors could see from the shore track the Medieval stone work surrounding most of the artificial island. That was two days of very hard work, hand winching fallen trees back out of the loch then cutting them up. Seeing young children exploring the island this February made me wonder whether the crannog was ever a family home with children playing or had it always been a male dominated stronghold.
Fraser's 1916/17 report of the 1914/15 and 16 excavations was published in the PSAS and is available online. It is compulsive reading and I shall not spoil it for you by delving too far into the report. Mr Fraser was a teacher in Dingwall and was only able to supervise the excavations part time and during school holidays. With WW1 raging he had difficulty finding workmen but he eventually found two local men and all work appears to have been done with spades. There is no mention of trowels. He did however engage a Dingwall architect to make measured drawings and another teacher to make sketches. A third person undertook the photography. Fraser was as thorough as he could be at that time and he records a lot of detail. I do not know whether there is an official archive stored away somewhere but a century on I think an updated expert re-interpretation of Fraser's work would be a good starting point for new research.
The last known use of the crannog was as a kitchen garden and orchard by the tenant of Kinellan Home Farm in the late 19th and early 20th C. A thicket of old fruit tree rootstock scrub still survives and few tangled gooseberry bushes. Today though the crannog is dominated by dense mature ash and willow trees, an occasional gnarled Hawthorn and two very fine birch trees. Many of the willows have fallen down, most are dead and rotting away but a good number, especially those that have tumbled into the loch remain alive and have produced masses of new stem growth called Phoenix growth – raised from the dead!
This entry was posted in Excavations, Iron Age, Medieval, Strathconon and Ross-shire and tagged Alex O Curle, crannog, cruck frame, Hugh Fraser, ivory gaming piece, Loch Kinellan, Mackenzies of Kintail, Medieval ceramics, naust, palisade, the crannog centre on April 11, 2021 by nosas.
Sarclet Harbour, Caithness
by Anne Coombs
Figure 1: Looking out to sea
Caithness at the end of the 18th century was an exciting place to be. While maybe not the centre of the world, it was home to some of the big names of the time. Sir John Sinclair, 'Agricultural' Sir John, of Ulbster is a name we should all know. He instigated the Old Statistical Accounts of Scotland, an amazing resource which is often the first place we look for details of life in the 1780s and 90s. His name appears in many of the forward-thinking documents of the time, not just the OSA, he was author of the General View of the Agriculture of the Northern Counties. He was a member of the British Fisheries Society and a Trustee of the Board for the Improvement of Fisheries and Manufactures along with his near neighbours in Sutherland, George Dempster of Dunnichen, founder of Spinningdale mill, and Lord Gower, later the Marquise of Stafford and then the Duke of Sutherland.
This group instigated several moneymaking (Improvement) schemes, one of the most successful was the development of the herring fishing industry off the coast of Caithness during the 19th century. The British Fisheries Society was responsible for building Pultneytown immediately south of the Wick River. It was laid out by Thomas Telford in 1786 and was so successful it became known as 'Herringopolis' with the harbour so full of fishing boats which meant you could walk across it without touching water. But Pultneytown was just one of many harbours developed along the coast of Caithness during this period.
Figure 2: Storehouse, well and track to top of cliff
This entry was posted in Caithness, General Archaeology, Post Medieval and tagged Board for the Improvement of Fisheries and Manufactures, British Fisheries Society, David Brodie of Hopeville, General View of the Agriculture of the Northern Counties, George Dempster of Dunnichen, herring fishing, Herringopolis, Lord Gower, Old Statistical Accounts of Scotland, Pultneytown, Sir John Sinclair, Spinningdale mill, Thomas Telford, Whaligoe on January 16, 2021 by nosas.
Etching and engraving Pictish symbols and figures on to wood
The Conan Stone on wood by John Wombell see A Newly Discovered Pictish Stone for Easter Ross
First the excuse. I tried this in the Autumn of 2019 to boost entries for the Tarradale Through Time art competition with a new interpretation of Balblair man, on a panel long since removed from a position beside Kilmorack School to Moniack Castle. Despite being a Mercian through and through I have lived and worked in the land of the Picts for over half a century. This, as well as being married to someone with Pictish genes for sure, has led one to develop an ongoing interest in the mysterious Picts. Living not far away, we visited the Sueno's stone in Forres more than once with the children many years ago.
For a decade plus I had responsibility for a number of burial grounds in Kincardine and Deeside with fine Pictish stones in them (Fordoun, Tullich and Migvie). Then came one of those special moments in archaeology; when digging at Birnie I discovered the Birnie Painted Pictish Pebble and that kept my interest going. Stories of discovery are rarely told unless it is the likes of Tutankhamen's tomb, and the story of the discovery of the Birnie pebble has never been told so why not now?
I had been patted on the head and set to cleaning and defining an area within what was thought to be a small Pictish house built in the ruins of a roundhouse. What was revealed was a small setting of smooth cobbles looking like it might have been a crafting workplace. When I first encountered the pebble it was tilted slightly on its long axis. Fortunately that day I was in 'careful mode' and as soon as the top edge of the pebble was revealed it was clearly quite different and it looked like quartz or quartzite. I left it firmly in place and carefully cleaned away another cm or so of sand from round about it. It continued to look interesting so I called over Alan Braby, who's trench I was in, for a look see. Alan came over, peered at the pebble, plucked it out of the sand and asked me if I had a wee brush of some kind, which I had. Then he cleaned the pebble off and said 'have you any idea what this is?' 'Haven't a clue,' I replied, 'other than a finishing stone for some kind of craft work maybe'. So then he showed me the feint decoration on the stone that was becoming clearer as the pebble dried out. Well Alan says, 'it is a Painted Pictish Pebble and the first to be discovered on the South side of the Moray Firth.' Then we realised that it was decorated on both sides. It was most exciting day.
Birnie Painted Pictish Pebble
Painted Pictish Pebbles are rare artefacts and most have been found at Caithness and Shetland broch sites. They are at the very bottom of the Pictish art spectrum and I remain convinced that the designs on them reflect the Picts knowledge of cup and ring marked rocks, which in Pictish times would have been far more numerous than today. Since then I have never stopped looking for blanks of the same size and shape and they are as rare as hen's teeth. Beach pebbles of quartz tend to be rounded and if oval they tend to be too large and too heavy. The nearest I have found are quartzite and the replica I made of the Birnie pebble is on such a blank. There is plenty of information on Painted Pictish Pebbles free online.
Selection of painted pictish pebbles from Shetland.
This entry was posted in General Archaeology, Pictish and tagged Balblair Pictish stone, Birnie painted pebble, Collieburn Golspie, Conan stone, cup marked stone Moniack Castle, Inchbraycock, Mail Cunninsburgh, Newton of Collessie, pictish archaeology, Pictish carved stone, pictish cross slab, Pictish painted pebbles, Rhynie man, Samson stone, Tulloch man on January 6, 2021 by nosas.
Was there mineral extraction in the Highlands in prehistoric times?
by Jonathan Wordsworth
The recent Zoom lecture by Matthew Knight on the Late Bronze Age Hoard found in a peat cutting behind Poolewe in 1877 (the talk can be viewed on the Gairloch Museum Youtube channel at Poolewe: The last Bronze Age hoard in Scotland? by Dr Matthew Knight) and the recent Feats of Clay project (http://archhighland.org.uk/feats-of-clay.asp) led by ARCH relating to a metal-working site with rare clay mould fragments found during excavations at Bellfield, North Kessock, demonstrate bronze casting was occurring in the Highlands. Together with the Stittenham Axe Mould these are important finds for Late Bronze Age Scotland.
Stittenham Axe Mould © ARCH
But this is a speculative blog examining the possibility that there might have been copper and other ores extracted in the Highlands during the Bronze Age and is meant to stimulate research by NOSAS members on some of the ore sources. While current research has not identified any prehistoric mining in Scotland, except possibly in South West Scotland, there is certainly nothing on the scale of the Great Orme mine in North Wales. The received wisdom is that the copper and other metals alloyed with it such as tin, zinc and to a lesser extent lead, were brought into the area as ingots from metal extracted from elsewhere in the British Isles or from further afield in continental Europe. Recent metallurgical analyses have shown very mixed compositions for the metal tools and the recent work on the Poolewe Hoard shows at least 5 different mixes of metals to produce the surviving material (see the research results at https://www.academia.edu/44587605/Poolewe_The_last_Bronze_Age_hoard_in_Scotland).
Certainly by the end of the Bronze Age it is likely that a variety of broken or discarded objects would be thrown into the mix for melting down, making it difficult to identify the original ore source from trace element analysis.
Copper Ore in the Highlands
However research over a number of years by the British Geological Survey has mapped extensive copper ore sources in Wester Ross and some of these have even been looked at commercially (e.g. https://resources.bgs.ac.uk/meiga_reports/meiga/ae173.txt) and the 'gossan' at Gairloch is even used as the frontispiece for the British Geological Survey report Minerals in Britain – Copper (which can be viewed online at https://www2.bgs.ac.uk/downloads/start.cfm?id=1324)
This entry was posted in Bronze Age, General Archaeology, Wester Ross and tagged Bellfield, BGS online dataset Geoindex, British Geological Survey, bronze casting, cassiterite Carn Chuinneag, Copper ore, copper ore Gairloch, Feats of Clay: Bronze Age Metalworking around the Moray Firth, Great Orme mine, Matthew Knight, Neil Burridge, North Kessock, Poolewe Hoard, prehistoric mining, Rassal mine, Sittenham axe mould on December 6, 2020 by nosas.
The Demolition of a Cruck-Framed Building near Beauly
Fig 1: Removing the corrugated iron reveals a modern timber roof and a cruck-frame
In early June 2020, I became aware that a neighbour on the braes below me was doing up an old cottage, with a 1970's extension, that he had inherited from his father. He was one of four children brought up in the old cottage in the 1960's. Once he had removed the corrugated iron roof from the cottage, a peat and heather roof was revealed. When that was removed a wooden cruck-frame appeared. I showed a photo (fig 1) to colleagues who immediately suggested that I should survey and record it. Cruck-framed buildings are not so common these days. There was additional interest in that the cruck-frame had been overlaid by a more modern roof and that the building is likely to be demolished.
Extract of 1:250000 OS map showing location of Ruisaurie crofting settlement. ©Ordnance Survey
How old is it? The online Lovat Estate maps show that the braes above, ie W of, Beauly were increasingly brought into crofting, gradually extending into moorland, between the mid-18th century and the early part of the 19th century. According to those maps, one of the crofts, Ruisaurie, had two croft numbers in 1757, eight numbers in 1798-1800, seventeen in 1823 and twenty-four in 1839. The crofts increased by both being sub-divided, and by new croft settlements being established on the higher ground. Confusingly, the numbering of the crofts changed over time, although by 1876 the croft numbering had become established to reflect the croft numbering now.
Fig 3: Extract of 1876 map showing extent of the Ruisaurie 11A croft © Lovat Highland Estates Ltd.
This entry was posted in Archaeology by Location, General Archaeology, Loch Ness, Aird and Inverness, Post Medieval, Surveying and Recording and tagged beauly archaeology, crofting settlement, cruck blade, cruck framed, cruck pairs, dendrochronology, drawing a building, hanging lum, heather and peat roof, Lovat Estate, purlins, Ruisaurie, venacular buildings highlands on July 15, 2020 by nosas.
Raigmore Hospital, Inverness: From EMS to NHS
by Marion Ruscoe
Raigmore Hospital, 1948 © HES (Aerofilms Collection)
Raigmore Hospital was erected as part of the Emergency Medical Scheme (EMS) on part of the Raigmore estate and opened in 1941. The Emergency Medical Scheme was established to provide adequate medical facilities for expected wartime casualties and Raigmore was one of seven new hospitals built during the war. They were all built to a standard design, but because of restrictions in the use of timber and steel, the buildings at Raigmore were brick, single storey and flat roofed. An aerial photograph, taken in 1948, of the new hospital shows the layout to the south of Raigmore House on the east side of Inverness. There were 16 individual wards and an isolation unit providing about 670 beds. Staff accommodation was provided at the north-west corner of the site and a further collection of individual blocks between the staff accommodation and the wards housed administration, kitchens, dining rooms, laboratories and other services.
After the war, Raigmore continued to provide hospital services to Inverness and the surrounding area along with, principally, the R.N.I., Culduthel Hospital and Hilton Hospital but by the 1960s the facilities in Inverness were not meeting modern needs and in 1962 plans for a new general hospital to serve Inverness were put in place. As an EMS hospital Raigmore was never designed to last for ever. By 1966 work had begun on the new hospital for the Highlands and it was decided that it had to be at Raigmore, because that was where there was enough space to develop the facilities. Phase 1 of the development was opened in 1970. It incorporated the Outpatients Department, laboratories, pharmacy, physiotherapy and records. Dr. James Bruce, who in 1947 was appointed consultant biochemist, finally got the new laboratory that he was promised at interview.
An aerial view of the hospital in 1972 shows Phase 1 at the bottom of the photo, but the original hospital buildings are still there and in use. When comparing this view with the earlier view taken in 1948 the only other differences are that the walled garden has become part of the hospital car park, and the College of Nursing has been built to the right of the wards.
This entry was posted in 20th Century, Archaeology by Location, Loch Ness, Aird and Inverness and tagged aerial photography, Culduthel Hospital, Hilton Hospital, Raigmore Hospital, Royal Northern Infirmiry on July 9, 2020 by nosas.

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: html contact form + php not sends email I just tried to send email using html form and php, but not able to send email to the respective mail id provided in textbox as input.
I searched and got this example code, can anyone suggest me that where I made mistake.
html
    <!DOCTYPE html>

        <meta charset="utf-8" />
        <title>Contact Form</title>

        <link rel="stylesheet" type="text/css" href="./styles.css" />

Drop me a Message!

                <form id="contact-form" action="javascript:alert('success!');">

Hello Joe,

                    Your Message :
                    <textarea  name="message" value="Your Message" id="message" ></textarea>

Best,

                    Name:
                    <input type="text" name="name" value="" id="name" />
                    Email:
                    <input type="text" name="email" value="" id="email" />
                    <input type="submit" name ="submit" value="OK I want to send it now, thanks!" />
                </form>

send.php
    <?php
        define("WEBMASTER_EMAIL", 'myid@company.com');

        error_reporting (E_ALL ^ E_NOTICE);

        function ValidateEmail($email)
        {
            $regex = '/([a-z0-9_.-]+)'. # name
            '@'. # at
            '([a-z0-9.-]+){2,255}'. # domain & possibly subdomains
            '.'. # period
            '([a-z]+){2,10}/i'; # domain extension

            if($email == '')
                return false;
            else
                $eregi = preg_replace($regex, '', $email);
            return empty($eregi) ? true : false;
        }

    //////////////////////////////////////////////////////

        $post = (!empty($_POST)) ? true : false;

        if($post)
        {
            $name    = stripslashes($_POST['name']);
            $email   = trim($_POST['email']);
            $subject = stripslashes($_POST['subject']);
            $message = stripslashes($_POST['message']);

            $error = '';

            // Check name
            if(!$name || $name == "Name*")
                $error .= 'Please enter your name.
';

            // Check email
            if(!$email || $email == "Email*")
                $error .= 'Please enter an e-mail address.
';

            if($email && !ValidateEmail($email))
                $error .= 'Please enter a valid e-mail address.
';

            // Check message
            if(!$message)
                $error .= "Please enter your message.
";

            if(!$error)
            {
                $mail = mail(WEBMASTER_EMAIL, $subject, $message,
                     "From: ".$name." <".$email.">\r\n"
                    ."Reply-To: ".$email."\r\n"
                    ."X-Mailer: PHP/" . phpversion());

                if($mail)
                    echo 'OK';
            }
            else
                echo '
'.$error.'
';
        }

    ?>

Any ideas ?

A: try configuring this in your php.ini
SMTP = smtp.exmaple.com -> smtp host
smtp_port = 25 -> port usually 25
username = usename@user.com
password = password
sendmail_from = sourceofmail@example.com

A: Firstly, due to the problems caused by spam mails, many servers have limited the mails outgoing unless its authenticated by some authority like Gmail, Yahoo etc.
Secondly, You should check out your php version and see if you are using the right formats rather than copy pasting a sample code.
Finally, if you are doing this from you local machine, your ISP might have implemented some regulations for sending emails.

A: If you are getting "OK" message from ajax and mail sent message is displayed and still not receiving the emails, then you need to check your php.ini's smtp server settings.
Open your php.ini file and look for the following settings:
SMTP = smtp.gmail.com
smtp_port = 25
username = youremail@gmail.com
password = PASSWORD
sendmail_from = webmaster@yourdomain.com

You can use gmail's smtp server settings to send an email for testing, if you are not sure where to get those.
Check this out: https://www.digitalocean.com/community/tutorials/how-to-use-google-s-smtp-server

A: I tried your code on my server and the first thing I noticed: "ReferenceError: $ is not defined"
So the linked jquery doesnt work and wont execute the ajax request.
Change it to more recent version on googleapis (googlecode will be shut down January 25, 2016)

(Assuming your php.ini is configured to send mails: see other answers)

redpajama_set_name: RedPajamaStackExchange


text:
Home Entertainment FPSRussia Revealed!
FPSRussia Revealed!
For some reason, FPSRussia breaks character to answer YouTubers Q&A. To say it's jarring to hear Kyle speak in his normal (gently Southern) accent would be like saying Barbara Palvin is kinda cute. [Note to Kyle: Disney doesn't let actors remove their costumes in front of the public. Ever.] Despite claiming he's got the best job at the world, Kyle/Dimitri's chafing at the bit, creatively speaking. He says he wants to do "behind the scenes" videos. In other words, he wants to be a reality TV star. He also aspires to be the Dear Abbey of guns. [Note to Kyle: racking a pump shotgun may not send burglars running.] This video shows Kyle's affinity with Nutnfancy, if you know what I mean. Shark jumped?
Previous articleBREAKING: California's 10-Day Waiting Period Overturned…Mostly
Next articleThin Guys. Fashion. Red Wine. Remington Hearts Ammosexuals
ANOTHER BAIL REFORM VICTIM: Chicago Man Kills Rear Seat Passenger in His Own Car While Trying To Shoot Another Driver
OMG! A White Kid With Two Toy Guns! OMG!
Baldwin: I'm Not Responsible for Halyna Hutchins' Death
Swarf August 25, 2014 At 15:14
This video shows Kyle's affinity with Nutnfancy, if you know what I mean.
The video wasn't 6 hours long, so no, I don't know what you mean.
80 D August 25, 2014 At 15:35
Hey, to be fair Nutn breaks his six hour vids into 24 easily digestible 15 minute segments.
/sarc
Scrubula August 25, 2014 At 15:46
For 5 easy payments of $9.99!
Gene August 25, 2014 At 16:05
Not to mention it's only 15 minutes of original text spoken 24x. I find the dude extremely repetitive and redundant.
Michael in GA August 25, 2014 At 17:39
I didn't get that either.
Layne August 25, 2014 At 15:18
Clearly his idea for the channel was good, as evidenced by its popularity. I think he blew it by not hiring an actual Russian to play the character though. Obviously HE wanted to be famous though so that wouldn't work.
On one hand his channel is popular and on the other hand…he blew it? Do you realize the contradiction in your statement?
CA.Ben August 25, 2014 At 17:39
His channel was originally videogame gameplay with commentary in a Russian accent. It didn't matter what he looked like, because we never saw him. Yes I was a nerdy subscriber way back then.
The channel seems to have transformed into what it is now by happenstance. I remember he posted a few gun videos to break up the videogame monotony, and those really propelled him into the spotlight. But I don't think that it was planned at all.
Zeus August 25, 2014 At 19:32
"Russian Accent"
really ? really ?
like Sean Connery's Russian accent in Red October
total failure
Tommycat August 25, 2014 At 21:25
Yeah, people forget that FPS is for First Person Shooter. Games like Doom, Quake, Battlefield, Half-Life and the like are called FPS games.
Johannes p August 25, 2014 At 15:19
FPS Russia didn't jump the shark just now….in fact, he was *always* on the far side of the shark.
Rick August 25, 2014 At 21:57
it didn't jump the shark. It stuffed a pound of Tannerite down the shark's throat and hit it with a .50BMG from a half mile away using a Soviet made antimateriel rifle.
jwm August 25, 2014 At 15:20
racking a shotgun can send the bad guys running. It did for me. No shots fired and no hassle.
If someone breaks into your home while you are there, he aint there for the TV. If you surprise a petty thief with a sound effect of racking a shotgun and he runs away, he probably would have run away if you just offered him a beer.
Chris S August 25, 2014 At 15:24
He's been doing his non-Russian voice for a while on his other show, PKA (Painkiller Already).
borg August 25, 2014 At 15:25
doesky2 August 25, 2014 At 15:42
If that's your way of saying you prefer CarnikCon in this genre space …than I fully agree.
Accur81 August 25, 2014 At 15:27
It's a good, honest video. I don't begrudge the "racking the shotgun" thing (not that I would do that). I appreciate FPS' honesty, although his safety can be spotty. I've definitely enjoyed some of his videos.
Kevin L August 25, 2014 At 15:35
dph August 25, 2014 At 15:46
What do you mean not safe?
C August 25, 2014 At 17:07
8.5/10 would operate with.
Tommy Knocker August 25, 2014 At 15:44
Hey that was a pretty good American accent for a Russkie. Damn Russkies have moles everywhere. Georgia USA. Right ! More like Georgia USSR. Oh and btw, would like to see the video of his interview with the cops after his manager got wacked. Or did he?????
RandallOfLegend August 25, 2014 At 15:46
Maybe he can tell me how to make the hammer cocking noise with a glock like they do in the movies.
Jonathan - Houston August 25, 2014 At 16:00
No, go big: ask how they make them undetectable by metal detectors.
Hellooooooo… Those are #plasticgunsohno #nrastinksamirite!
I think the phrase "jumped the shark" has itself jumped the shark. Generally it just means a hokey gimmick, but it really means one that's so hokey as to destroy whatever credibility and value the underlying thing had, by making a mockery of itself. Well.
That stupid episode was in what, about season four or five of "HappyDays", when they went out to California? The show ran very successfully for another five or six years beyond that season. So its post-shark period alone was much longer than most shows run in total.
Somebody must've still been watching and pleased with the product, in addition to buying all of those lunch boxes and board games, despite its sharkiness. Yet, its become fashionable to deride that success as being, well, unsuccessful. Its silliness.
As for FPS Russia, I only ever first heard of him after it was already widely speculated that his shtick was an act. So it always sounded like a cocktail party Yakov Sminoff impression to me. Things got real once a dead body made the scene, though. So I don't know what the hell they're into or up to.
Little did I know, it was history when I watched those episodes. It was a cliff hanger!
Ralph August 25, 2014 At 16:16
Kyle's been a bit rudderless since Keith Ratliff was murdered and the ATF raided Kyle. Maybe he needs to reinvent himself.
former water walker August 25, 2014 At 16:16
I find fps mildly amusing. I don't think his faux Russian is that bad. And I know some real Russians. But then I'm not his target audience(I'm old). My favorite is the automatic shotgun. I don't quite understand his appeal though…
Such a big, big, gun August 25, 2014 At 16:50
Honestly – I think Kyle serves as surrogate bigger than life big brother type for an entire generation of boys who have been raised without fathers in feminized suburban environments where gun ownership is deemed an anathema and, hence, never really experienced shooting except, of course, in videos games. It's why they flock to his channel in what seems like millions. I sometimes wish he would be a little bit safer, but, I think, he probably does a lot to increase firearms knowledge and interest in the younger generation.
Although older, Hickok45 has a similar appeal. Although, they're usually looking for a grandpa. I always get a kick when Hickock is doing, say, an WWII era gun and says "this is what I carried" and these kids – raised in irony free zones – are like, "Wow, you must be 90 years old!"
It is hard to underestimate the effect that a guy like Hickok and, yes, FPS are going to have long term. I think more than a few future shooters will be able to point back to them as the starting point on their journey to becoming armed Americans.
Absolutely, I know people who initially got into guns because of FPS.
SGC August 25, 2014 At 16:32
Good gun porn…entertaining, with a little extra value maybe. At least it's not another boring gun blog…:)
rlc2 August 25, 2014 At 16:34
I suppose its rude to ask about this:
http://www.military.com/off-duty/off-beat/2014/01/06/no-answers-a-year-after-fpsrussia-death.html
dr_elusive August 25, 2014 At 16:53
I like his channel but have always been a annoyed by the lack of safety gear. He has the potential to inspire tons of new gun owners, but he should be demonstrating how to Safely have fun. That said, in his last couple that i have see he was actually wearing ear protection, so i guess that's a start.
John Galt August 25, 2014 At 22:12
Speaking of inspiring new gun owners…
If TTAG authors and contributors refrained from sexist and mysogynistic remarks, it would:
* further the cause of the 2nd Amendment by creating a welcoming atmosphere for women, millenials, etc.
* help bury the stereotype of gun owners being exclusively OFWGs
The reference to Barbara Palvin is unnecessary.
Humor is very necessary.
TheBear August 26, 2014 At 07:48
Humor is subjective… and as a tech-savvy 30 something, I think the links to models just make the TTAG writers look like they desperately need to get laid.
Whether you think it's in bad taste or not it's unnecessary and unprofessional.
Did you click the link? http://www.hdwallsource.com/barbara-palvin-13458.html
It is a picture of her face.
God you people are some uptight prudes. Talk about desperately needing to get laid.
Here…let me fix it for ya:
To say it's jarring to hear Kyle speak in his normal (gently Southern) accent would be like saying this hand engraved Kimber 1911 is kinda cute. http://baronengraving.com/hand-engraved-kimber-1911/
@Michael – I am not a prude. In fact, as a geeky con goer, I've probably seen things that would make a number of regular posters on here pass out.
What I /am/ is professional and unbiased. There is a reason why the Wal Street journal doesn't include random pictures of hotties in serious articles. If I have to explain why to you, then there's nothing else I can say here.
Well The Bear, TTAG ain't your daddy's blog. You did not have to click the link to get the sarcasm.
CRZ August 26, 2014 At 08:48
There's also a reason nobody reads The Wall Street Journal for any sort of entertainment value.
@CRZ If this were just an entertainment blog, I would agree with you.
The problem is that this blog is front and center in the fight for our 2nd amendment rights. As such, I think our right to keep and bear arms and the effort to keep our communications classy towards that end is more important than a short chuckle.
T Bear…Chill Bro! It's going to be alright. Do I come here to look at sexy women? No man. Does the occasional outside link to a supermodel distract from the point the article was trying to make? I can't imagine how. Does this site cater to TheBear? Thankfully not. Does this site cater to me? Unfortunately not, but that's the way it is dude. Enjoy the girls or better yet just chuckle at the joke that was made by mentioning the gorgeous woman and continue reading. She was not the focal point of the article. Don't make her out to be. Was that line and picture necessary? Absolutely not but these articles are not tech manuals. Good Grief you must be the most boring person on the face of the Earth.
I hear you man…
But I didn't start a comment bitching about it. I just responded to those who mentioned it. 🙂
Toby in KS August 25, 2014 At 17:10
Holy crap he's not Russian. He had me fooled with that half-episode I watched!
It also seems like Kyle, unlike his character, is not a raging douche bag.
AJ187 August 25, 2014 At 17:20
My question: Who killed Keith Ratliff, Kyle?
bossmanham August 25, 2014 At 22:14
How would he know?
RC August 25, 2014 At 17:45
I tend to see Kyle and his FPSRussia character a little differently. FPSKyle used to be a COD commentator back in the early days of video games on youtube. He also had several impressions that he would do while commentating videos. One of the more popular ones was FPSRussia. Kyle saw the success of this character and decided to spin it off to another one of his hobbies to make some money to supplement his FPSKyle channel. Eventually, he left the COD scene but his FPSRussia channel was still doing well so he kept it going.
The way I see it, Kyle is a really good business man and just likes making money. The character served as a source of income so he kept with it. Anybody who didn't know he wasn't really russian never read the comment section of his videos or listened to Painkiller Already (his podcast, mentioned elsewhere in the comments)
Dano August 25, 2014 At 17:45
"He says he wants to do "behind the scenes" videos. In other words, he wants to be a reality TV star. He also aspires to be the Dear Abbey of guns."
I don't see it that way at all. He has a massive audience. There is a lot of work that goes into planning and shooting the videos he produces. Why not take that cutting room floor footage and make something from it. First it drives more views, which puts more money in his pocket. Second, it's a low cost solution to adding more content. Third, it further engages his audience in discussion of the episodes. I think his Q&A was the right thing to do. Watch his channel really take off this fall.
Cogitans August 25, 2014 At 18:02
"This video shows Kyle's affinity with Nutnfancy, if you know what I mean. Shark jumped?"
Please don't shit in the pool Robert.
Matt in FL August 26, 2014 At 18:06
Word. I didn't see those things, either.
Werechicken August 25, 2014 At 18:45
Not Russian? What's next, you'll tell me Tupac really IS dead?
The Smiling Swordsman August 25, 2014 At 19:54
The dude looks more like my brother than I do. Hmmm……
esitue August 25, 2014 At 20:17
I never miss an episode
never watch it, never miss it
What is with ttag's hate for FPSRussia?
Dan A August 25, 2014 At 23:32
He rarely uses hearing protection.
I think that's about it, but yeah, RF never misses a chance to trash the guy. Should give it a rest IMO.
FPS is young, having fun and relatively famous.
I think there's some envy there.
Nick G. August 26, 2014 At 00:08
HEY! TTAG keeps telling us not to give the anit's ammo but isn't that what R. Farago is doing with this petty infighting? Kyle does a good job making an entertaining channel that get loads of views. And no, he's not perfect. He's shown that on camera. I doth think someone protests too much. Covetous much?
N8thecowboy August 26, 2014 At 07:49
I think the Barbara Palvin reference was very, very necessary.
So do a lot of other readers. The irony of course is that RF made and entire post complaining about how he isn't able to get any good dates with women while simultaneously not having the self awareness to recognize what a creeper he looks like with the model links on here.
smackdab August 27, 2014 At 01:10
Nutnfancy reference;
https://www.youtube.com/watch?v=kRUeoPsPbUE
I don't understand the Nutn' hate, he is clearly doing something right and he fills his niche quite well. Jeff Quinn has never met a royalties check he didn't like, Hickok has his range, militaryarms doesn't own a weed-wacker (watch recent video), Nutn' covers every aspect of something and seems to care about his audience. I listen to his hour long epochs while I do my gun cleaning, he has mastered boring blabby but informative nerveless.


NGS produces thousands of variants per run. Our software hones in on the very limited number that likely alter mRNA splicing. Variants are categorized by whether they fully or partially inactivate natural splice sites or activate cryptic sites proximate to exons or within them. Results for genome-wide, high throughput sequence data are usually obtained in less than 2 hours.
The pipeline uses our patented and proven information theory-based binding site analysis. The algorithm has been validated in numerous peer reviewed studies of splicing mutations. The Automated Splice Site Analysis system, the predecessor to the Shannon pipeline has been recommended for use in interpretation of rare variants by the American College of Medical Genetics and Genomics in their published guidelines and standards (Genet. Med. 7, 571–583). The FDA has determined that this software is a medical device under Section 513(g) of the US Federal, Food, Drug and Cosmetic Act, however, it is not yet approved for diagnostic use. The Shannon pipeline is covered by US Patent No. 5,867,402.
The Shannon splicing mutation pipeline is covered by US Patent 5867402 and patents pending.
Written by: Peter Rogan on August 11, 2012.on February 11, 2017.
Posted in and tagged mRNA splicing, mutation, next generation sequencing.


text:
Culture, Philosophy, Science, Short Articles, Symbolism
The Symbolism of the Ring
Article By M.A. Carrillo de Albornoz & M.A. Fernández
posted by India North, July 22, 2014
The ring is above all the symbol of a bond, an alliance or a vow. The hole in the middle of the ring channels the celestial influence, the breath of God that seals the pact. The hole is the receptacle for the energy that makes the wheel of destiny turn. The ring is the symbol of the power of great men and gives legal authority when adorned with the seal that grants it. In Greece, Zeus authorizes Herakles to free Prometheus on condition that Prometheus wears an iron ring on his finger in which a chip of rock from the Caucasus is set, as a reminder of his submission to Zeus. Any sort of bond that completely encircles a part of the body locks up its supernatural power, preventing the bearer of the bond to act freely. Buddhists see the ring as the symbol of the indefinite heaven, of a closed circle by contrast with the spiral. It is Heaven, as circle, in opposition to Earth, as square. On the esoteric plane, the ring is associated with the girdle, which guards places and protects secrets. To obtain a ring is like opening a door; to set a ring on one's own finger is to protect oneself and to place it on somebody else's finger is to accept a gift from someone else. Rings can also be represented as a circle of fire like the one that encircles Shiva, the cosmic dancer, as a reminder of the Zodiacal circle. In this case, the ring, as the Zodiac or the Ouroboros of the Gnostics, is divided in two parts: one active (evolution) and one passive (involution). This represents the vital process of the Universe and of each of its creatures, through the cosmic dance and the wheel of Nature whose endless creation and destruction enables the evolution of all beings. Many legends of humanity tell us about ring-talismans. In Nordic mythology, these special rings are associated with elves and dwarfs who keep them jealously. They sometimes offer these rings to human beings as a magical protection. These rings bring good luck to their owners, if they keep them, but the loss of the ring means painful disgrace and torments, as Wagner reminds us in the Ring of the Nibelungen, a part of his tetralogy. European literature often mentioned the "ring of Gyges" from Plato: a bronze ring which when put on his finger renders him invisible.
Image Credits: By Jorge Arimany | Wikimedia Commons | CC BY-SA 3.0
The Symbolism of the Lotus
Sacred Dance and Classical Indian Dance
The Power of Life
The Symbolism of the Giants
Prometheus the Awakener
The entity posting this article assumes the responsibility that images used in this article have the requisite permissions
By Jorge Arimany | Wikimedia Commons | CC BY-SA 3.0
Permissions required for the publishing of this article have been obtained
mascha says:
what a surprise to find such profound meanings on my first search, just what I was hoping for! Thanks so much!!


Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="25275"; mail-complaints-to="abuse@iecc.com"
utility program to search for specific characters in files.
mixing of arithmethic operations between numeric types.
added to the libraries scanfile.s7i and scanstri.s7i.
support of Emscripten is experimental (see also src/read_me.txt).
have been added to chkdb.sd7.
float.s7i and integer.s7i have been improved to use the new actions.
a function with the name of the type.
mount the file system root for emscripten and node.js.
in single quotes (') and double quotes (").
database client functions with the calling convention __stdcall.
sqlColumnStri() to get a CLOB.
and to raise RANGE_ERROR for BLOBs.
and to raise RANGE_ERROR for CLOBs.
the name of a column is encoded with UTF-8.
escaping backslashes in string literals.
when the string contains a zero byte ('\0;').
with the type FLOAT8OID as double instead of float.
but the checked C compiler is emcc.
to check fseek() and ftell() without access to the local files.
Oracle and Firebird databases has been improved.
HAS_SETJMP and HAS_SIGSETJMP has been added or improved.
signal() nor sigaction() are present.
- Exprerimental code has been added to con_emc.c.
interpreted or compiled, portable, runs under linux/unix/windows.