{ authors: { robert_mcgovern: { name: 'Robert McGovern', web: 'https://tarasis.net', email: 'rob@tarasis.net', bio: '', avatar: 'bio-photo-2.jpg', twitter: 'tarasis' } }, navigation: { main: [ [Object], [Object], [Object], [Object] ] }, site: { theme: 'minimal-mistakes-jekyll', minimal_mistakes_skin: 'neon', locale: 'en-US', title: 'TDN: RMCG', title_separator: '-', name: 'Robert McGovern', description: 'Random Things', url: 'https://tarasis.net', baseurl: '', repository: null, teaser: null, logo: '/assets/images/apple-touch-icon.png', masthead_title: '', subtitle: 'πŸ‘¨β€πŸ’» πŸšΆβ€β™‚οΈ πŸ’­ 🀯', breadcrumbs: false, breadcrumb_home_label: 'Home', breadcrumb_separator: '>', words_per_minute: 200, head_scripts: [ '/assets/js/progress.js', '/assets/js/scroll-to-top.js' ], comments: { provider: 'disqus', disqus: [Object], discourse: [Object], facebook: [Object], utterances: [Object] }, staticman: { allowedFields: [Array], branch: null, commitMessage: 'New comment by {fields.name}', filename: 'comment-{@timestamp}', format: 'yml', moderation: true, path: '_data/comments/{options.slug}', requiredFields: [Array], transforms: [Object], generatedFields: [Object], endpoint: null }, atom_feed: { path: null }, search: true, search_full_content: true, search_provider: 'lunr', algolia: { application_id: 'F5FF4IDLYX', index_name: 'tarasis-blog', search_only_api_key: 'ed656902b5bdd356f885bf9d99635fc1', powered_by: true }, google_site_verification: null, bing_site_verification: null, yandex_site_verification: null, twitter: { username: 'tarasis' }, facebook: { username: 'tarasis', app_id: null, publisher: null }, og_image: '/assets/images/bio-photo.jpg', social: { type: null, name: null, links: null }, analytics: { provider: false, google: [Object] }, author: { name: 'Robert McGovern', avatar: '/assets/images/bio-photo.jpg', bio: 'Wannabe field researcher for the Hitchhikers Guide to the Galaxy', location: 'ZZ9 Plural Z Alpha', links: [Array] }, footer: { links: [Array] }, include: [ '.htaccess', '_pages' ], exclude: [ '*.sublime-project', '*.sublime-workspace', 'vendor', '.asset-cache', '.bundle', '.jekyll-assets-cache', '.jekyll-cache', '.sass-cache', 'assets/js/plugins', 'assets/js/_main.js', 'assets/js/vendor', 'Capfile', 'CHANGELOG', 'config', 'Gemfile', 'Gruntfile.js', 'gulpfile.js', 'LICENSE', 'log', 'node_modules', 'package.json', 'Rakefile', 'README', 'tmp' ], keep_files: [ '.git', '.svn' ], encoding: 'utf-8', markdown_ext: 'markdown,mkdown,mkdn,mkd,md', strict_front_matter: true, liquid: { error_mode: 'strict' }, markdown: 'kramdown', highlighter: 'rouge', lsi: false, excerpt_separator: '', incremental: false, kramdown: { input: 'GFM', hard_wrap: false, auto_ids: true, footnote_nr: 1, entity_output: 'as_char', toc_levels: '1..6', smart_quotes: 'lsquo,rsquo,ldquo,rdquo', enable_coderay: false }, sass: { sass_dir: '_sass', style: 'compressed' }, permalink: '/:year/:month/:day/:title/', paginate: 10, paginate_path: '/page:num/', timezone: null, plugins: [ 'jekyll-archives', 'jekyll-paginate', 'jekyll-sitemap', 'jekyll-gist', 'jekyll-feed', 'jemoji', 'jekyll-include-cache', 'jekyll-gist' ], whitelist: [ 'jekyll-archives', 'jekyll-paginate', 'jekyll-sitemap', 'jekyll-gist', 'jekyll-feed', 'jemoji', 'jekyll-include-cache', 'jekyll-gist' ], category_archive: { type: 'liquid', path: '/categories/' }, tag_archive: { type: 'liquid', path: '/tags/' }, compress_html: { clippings: 'all', ignore: [Object] }, collections: { recipes: [Object], pets: [Object], portfolio: [Object] }, defaults: { posts: [Object], pages: [Object], recipies: [Object] }, post_ext: 'markdown', page_ext: 'html', post_layout: 'single', page_layout: 'page', titlecase: true }, eleventy: { version: '2.0.0', generator: 'Eleventy v2.0.0', env: { source: 'cli', config: '/Users/tarasis/Programming/Websites/tarasis.net/.eleventy.js', root: '/Users/tarasis/Programming/Websites/tarasis.net', isServerless: false } }, pkg: { name: 'tarasis.net', version: '2.0.0', description: 'Second generation of site using 11ty for building but using Jekyll theme Minimal Mistakes (with mods to make it work)', main: 'index.js', scripts: { 'watch:sass': 'sass --watch src/_sass/**/*.scss dist/assets/styles/minimal-mistakes.css', 'build:sass': 'sass --style=compressed src/_sass/minimal-mistakes.scss dist/assets/styles/minimal-mistakes.css', 'build:mysass': 'sass --style=compressed src/assets/css/main.scss dist/assets/css/main.css', 'watch:eleventy': 'eleventy --serve', 'build:eleventy': 'eleventy', start: 'npm-run-all build:sass --parallel watch:*', build: 'npm-run-all build:*', debug: 'DEBUG=Eleventy:* eleventy' }, repository: { type: 'git', url: 'forgejo@git.tarasis.net:tarasis/tarasis.net.git' }, keywords: [ 'website', 'blog', '11ty', 'jekyll' ], author: 'Robert McGovern et all', license: 'MIT', devDependencies: { '@11ty/eleventy': '^2.0.0-beta.1' }, dependencies: { '@11ty/eleventy-navigation': '^0.3.5', '@11ty/eleventy-plugin-rss': '^1.2.0', '@11ty/eleventy-plugin-syntaxhighlight': '^4.2.0', '@11ty/eleventy-upgrade-help': '^2.0.5', autoprefixer: '^10.4.13', const: '^1.0.0', 'eleventy-load': '^0.3.1', 'eleventy-load-css': '^0.3.0', 'eleventy-load-file': '^0.1.0', 'eleventy-load-html': '^0.1.1', 'eleventy-load-sass': '^0.1.2', 'eleventy-plugin-description': '^0.1.5', 'eleventy-plugin-toc': '^1.1.5', 'eleventy-xml-plugin': '^0.1.0', 'fs-extra': '^11.1.0', 'js-yaml': '^4.1.0', 'markdown-it': '^13.0.1', 'markdown-it-anchor': '^8.6.6', 'markdown-it-attrs': '^4.1.6', 'markdown-it-container': '^3.0.0', 'markdown-it-fontawesome': '^0.3.0', 'markdown-it-footnote': '^3.0.3', markdownify: '^0.1.0', moment: '^2.29.4', 'npm-run-all': '^4.1.5', postcss: '^8.4.21', sass: '^1.57.1', slugify: '^1.6.5' } }, layout: 'single', permalink: "/{{ page.date | date: 'Y/M/D' }}/{{ page.fileSlug }}/", author_profile: true, read_time: true, share: true, related: true, title: 'Day 7 - Taking a break', date: 2019-06-03T20:20:16.000Z, category: null, tags: [ 'camino', 'caminodesantiago', 'jakobsweg' ], page: { date: 2019-06-03T20:20:16.000Z, inputPath: './src/_posts/2019-06-03-Day7.md', fileSlug: 'Day7', filePathStem: '/_posts/Day7', outputFileExtension: 'html', templateSyntax: 'liquid,md', url: '/2019/6/3/Day7/', outputPath: 'dist/2019/6/3/Day7/index.html' }, collections: { all: [ [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object] ], life: [ [Object], [Object], [Object], [Object] ], camino: [ [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object] ], caminodesantiago: [ [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object] ], webdev: [ [Object], [Object], [Object], [Object], [Object], [Object] ], javascript: [ [Object], [Object] ], freecodecamp: [ [Object] ], css: [ [Object], [Object] ], site: [ [Object], [Object], [Object], [Object] ], frontendmentor: [ [Object], [Object] ], programming: [ [Object], [Object], [Object], [Object], [Object] ], ios: [ [Object], [Object], [Object], [Object] ], swift: [ [Object], [Object], [Object], [Object] ], 'coding-challenges': [ [Object], [Object], [Object] ], jakobsweg: [ [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object] ], caminofrances: [ [Object] ], personal: [ [Object], [Object] ], webdevelopment: [ [Object] ], learning: [ [Object] ], html: [ [Object] ], swiftui: [ [Object] ], pages: [ [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object] ], posts: [ [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object] ], projects: [], tags: [ 'life', 'camino', 'caminodesantiago', 'webdev', 'javascript', 'freecodecamp', 'css', 'site', 'frontendmentor', 'programming', 'ios', 'swift', 'coding-challenges', 'jakobsweg', 'caminofrances', 'personal', 'webdevelopment', 'learning', 'html', 'swiftui' ] }, siblings: { next: { template: [Template], data: [Object], page: [Object], inputPath: './src/_posts/2019-06-04-Day%208.md', fileSlug: 'Day%208', filePathStem: '/_posts/Day%208', date: 2019-06-04T19:30:37.000Z, outputPath: 'dist/2019/6/4/Day%208/index.html', url: '/2019/6/4/Day%208/', templateContent: [Getter/Setter], content: [Getter] }, prev: { template: [Template], data: [Object], page: [Object], inputPath: './src/_posts/2019-06-02-day6.md', fileSlug: 'day6', filePathStem: '/_posts/day6', date: 2019-06-02T16:49:22.000Z, outputPath: 'dist/2019/6/2/day6/index.html', url: '/2019/6/2/day6/', templateContent: [Getter/Setter], content: [Getter] } } ---- { template: Template { _config: TemplateConfig { userConfig: [UserConfig], overrides: {}, projectConfigPaths: [Array], customRootConfig: null, rootConfig: [Object], hasConfigMerged: true, logger: [ConsoleLogger], _usesGraph: [GlobalDependencyMap], config: [Object], verbose: true }, inputPath: './src/_drafts/swiftui.md', inputDir: 'src', parsed: { root: '', dir: './src/_drafts', base: 'swiftui.md', ext: '.md', name: 'swiftui' }, extraOutputSubdirectory: '', outputDir: 'dist', _extensionMap: EleventyExtensionMap { eleventyConfig: [TemplateConfig], _config: [Object], formatKeys: [Array], unfilteredFormatKeys: [Array], _extensionToKeyMap: [Object], validTemplateLanguageKeys: [Array], passthroughCopyKeys: [], _spiderJsDepsCache: {}, _engineManager: [TemplateEngineManager] }, linters: [], transforms: [], templateData: TemplateData { eleventyConfig: [TemplateConfig], config: [Object], benchmarks: [Object], inputDirNeedsCheck: false, inputDir: 'src', dataDir: 'src/_data', rawImports: [Object], globalData: [Promise], templateDirectoryData: [Object], _fsExistsCache: [FSExistsCache], initialGlobalData: [TemplateDataInitialGlobalData], _extensionMap: [EleventyExtensionMap], _env: [Object], fileSystemSearch: [FileSystemSearch], configApiGlobalData: [Promise], pathCache: [Array] }, isVerbose: true, isDryRun: false, writeCount: 0, fileSlug: TemplateFileSlug { inputPath: '_drafts/swiftui.md', cleanInputPath: '_drafts/swiftui.md', dirs: [Array], parsed: [Object], filenameNoExt: 'swiftui' }, fileSlugStr: 'swiftui', filePathStem: '/_drafts/swiftui', outputFormat: 'fs', behavior: TemplateBehavior { render: true, write: true, outputFormat: 'fs', config: [Object] }, serverlessUrls: null, _logger: ConsoleLogger { _isVerbose: true, outputStream: [Readable] }, _templateRender: TemplateRender { _config: [Object], engineNameOrPath: './src/_drafts/swiftui.md', inputDir: 'src', includesDir: 'src/_includes', parseMarkdownWith: 'liquid', parseHtmlWith: 'liquid', _extensionMap: [EleventyExtensionMap], _engineName: 'md', _engine: [Markdown], useMarkdown: true }, inputContent: Promise { '---\n' + 'layout: single\n' + 'author_profile: true\n' + 'read_time: true\n' + 'share: true\n' + 'related: true\n' + 'title: SwiftUI\n' + 'tags: [swiftui,programming,ios, swift]\n' + 'category: Programming\n' + '---\n' + '\n' + "Its been a long while since I sat and did programming, but between a life situation and the new technology from Apple for creating user interfaces (SwiftUI), I've been inspired to pickup again an idea I've been kicking around for 10 years.\n" + '\n' + '\n' + '\n' + 'SwiftUI simplifies designing interfaces\n' + 'Provides a fast means of iterating design\n' + 'Able to quickly see results\n' + 'Easy to mock in data\n' + '\n' + 'Buggy.\n' + 'Filled 3 bugs so far.\n' + '\n' + 'Swift:\n' + '\n' + '{% highlight swift %}\n' + ' override public func touchesBegan(_ touches: Set, with event: UIEvent?) {\n' + ' super.touchesBegan(touches, with: event)\n' + ' currentTouchPosition = touches.first?.location(in: self)\n' + '\n' + ' NSObject.cancelPreviousPerformRequests(withTarget: self)\n' + ' }\n' + '{% endhighlight %}\n' + '\n' + 'Swift:\n' + '\n' + '```swift\n' + 'def print_hi(name)\n' + ' puts "Hi, #{name}"\n' + 'end\n' + "print_hi('Tom')\n" + "#=> prints 'Hi, Tom' to STDOUT.\n" + '```\n' + '\n' + 'Bash: \n' + '```bash\n' + '\n' + '#!/usr/bin/env bash\n' + 'set -e # halt script on error\n' + '\n' + 'echo\n' + 'echo "------------------------------------------------------------------------------------------------------------------------"\n' + 'if [ "$TRAVIS_PULL_REQUEST" != "false" -a "$TRAVIS_BRANCH" == "comments" ]; then\n' + '\n' + ' echo\n' + ' echo "Building site for pull request for $TRAVIS_BRANCH..."\n' + ' bundle exec jekyll build --config _config.yml --source . --destination ./docs\n' + ' echo "Site built into /docs"\n' + '\n' + ' echo\n' + ' echo "Proofing links"\n' + ' bundle exec htmlproofer ./docs --disable-external --allow_hash_href\n' + ' echo "Proofing links complete"\n' + ' echo\n' + ' echo "------------------------------------------------------------------------------------------------------------------------"\n' + '\n' + ' exit 0\n' + '\n' + 'elif [ "$TRAVIS_BRANCH" == "master" ]; then\n' + '\n' + ' echo\n' + ' echo "Building site for $TRAVIS_BRANCH..."\n' + ' bundle exec jekyll build --config _config.yml --source . --destination ./docs\n' + ' echo "Site built into /docs"\n' + '\n' + ' echo\n' + ' echo "Proofing links"\n' + ' bundle exec htmlproofer ./docs --disable-external --allow_hash_href\n' + ' echo "Proofing links complete"\n' + ' echo\n' + ' echo "------------------------------------------------------------------------------------------------------------------------"\n' + '\n' + ' exit 0\n' + '\n' + 'else\n' + '\n' + ' echo\n' + ' echo "Build not triggered internally"\n' + ' echo\n' + ' echo "------------------------------------------------------------------------------------------------------------------------"\n' + ' exit 0\n' + '\n' + 'fi\n' + '```\n' + '\n' + 'Ruby:\n' + '\n' + '{% highlight ruby %}\n' + 'require "gem"\n' + '\n' + 'number = 0\n' + 'regexp = /[abc]/\n' + '\n' + '# This is a comment\n' + 'class Person\n' + ' \n' + ' attr_accessor :name\n' + ' \n' + ' def initialize(attributes = {})\n' + ' @name = attributes[:name]\n' + ' end\n' + ' \n' + ' def self.greet\n' + ' "hello"\n' + ' end\n' + 'end\n' + '\n' + 'person1 = Person.new(:name => "Chris")\n' + 'puts "#{Person::greet} #{person1.name}\\n"\n' + '{% endhighlight %}\n' + '\n' + 'html:\n' + '\n' + '```html\n' + '\n' + '\n' + '\n' + ' \n' + ' Title\n' + ' \n' + '\n' + ' \n' + '

Heading

\n' + '

This is an example paragraph.

\n' + ' \n' + '\n' + '\n' + '```\n' + '\n' + 'css:\n' + '```css\n' + '.highlight pre {\n' + ' width: 100%;\n' + '}\n' + '\n' + '.highlight .hll {\n' + ' background-color: $base06;\n' + '}\n' + '.highlight {\n' + ' .c {\n' + ' /* Comment */\n' + ' color: $base04;\n' + ' }\n' + '}\n' + '```\n' + '\n' + 'Javascript:\n' + '\n' + '```javascript\n' + '$(document).ready(function() {\n' + ' // FitVids init\n' + ' $("#main").fitVids();\n' + '\n' + ' // Sticky sidebar\n' + ' var stickySideBar = function() {\n' + ' var show =\n' + ' $(".author__urls-wrapper button").length === 0\n' + ' ? $(window).width() > 1024 // width should match $large Sass variable\n' + ' : !$(".author__urls-wrapper button").is(":visible");\n' + ' if (show) {\n' + ' // fix\n' + ' $(".sidebar").addClass("sticky");\n' + ' } else {\n' + ' // unfix\n' + ' $(".sidebar").removeClass("sticky");\n' + ' }\n' + ' };\n' + '}\n' + '```\n' + '\n' + '

notice

{: .notice} \n' + '

primary

{: .notice--primary}\n' + '

info

{: .notice--info}\n' + '

warning

{: .notice--warning}\n' + '

success

{: .notice--success}\n' + '

danger

{: .notice--danger}\n' + '\n' + '
\n' + ' # Headline for the Notice\n' + '
\n' + ' Text for the notice\n' + '
' }, readingPromise: Promise { [Object] }, _frontMatterDataCache: Promise { [Object] }, _frontMatter: { content: '\n' + "Its been a long while since I sat and did programming, but between a life situation and the new technology from Apple for creating user interfaces (SwiftUI), I've been inspired to pickup again an idea I've been kicking around for 10 years.\n" + '\n' + '\n' + '\n' + 'SwiftUI simplifies designing interfaces\n' + 'Provides a fast means of iterating design\n' + 'Able to quickly see results\n' + 'Easy to mock in data\n' + '\n' + 'Buggy.\n' + 'Filled 3 bugs so far.\n' + '\n' + 'Swift:\n' + '\n' + '{% highlight swift %}\n' + ' override public func touchesBegan(_ touches: Set, with event: UIEvent?) {\n' + ' super.touchesBegan(touches, with: event)\n' + ' currentTouchPosition = touches.first?.location(in: self)\n' + '\n' + ' NSObject.cancelPreviousPerformRequests(withTarget: self)\n' + ' }\n' + '{% endhighlight %}\n' + '\n' + 'Swift:\n' + '\n' + '```swift\n' + 'def print_hi(name)\n' + ' puts "Hi, #{name}"\n' + 'end\n' + "print_hi('Tom')\n" + "#=> prints 'Hi, Tom' to STDOUT.\n" + '```\n' + '\n' + 'Bash: \n' + '```bash\n' + '\n' + '#!/usr/bin/env bash\n' + 'set -e # halt script on error\n' + '\n' + 'echo\n' + 'echo "---------------------------------------------------------------------------------------------------------------------"\n' + 'if [ "$TRAVIS_PULL_REQUEST" != "false" -a "$TRAVIS_BRANCH" == "comments" ]; then\n' + '\n' + ' echo\n' + ' echo "Building site for pull request for $TRAVIS_BRANCH..."\n' + ' bundle exec jekyll build --config _config.yml --source . --destination ./docs\n' + ' echo "Site built into /docs"\n' + '\n' + ' echo\n' + ' echo "Proofing links"\n' + ' bundle exec htmlproofer ./docs --disable-external --allow_hash_href\n' + ' echo "Proofing links complete"\n' + ' echo\n' + ' echo "------------------------------------------------------------------------------------------------------------------------"\n' + '\n' + ' exit 0\n' + '\n' + 'elif [ "$TRAVIS_BRANCH" == "master" ]; then\n' + '\n' + ' echo\n' + ' echo "Building site for $TRAVIS_BRANCH..."\n' + ' bundle exec jekyll build --config _config.yml --source . --destination ./docs\n' + ' echo "Site built into /docs"\n' + '\n' + ' echo\n' + ' echo "Proofing links"\n' + ' bundle exec htmlproofer ./docs --disable-external --allow_hash_href\n' + ' echo "Proofing links complete"\n' + ' echo\n' + ' echo "------------------------------------------------------------------------------------------------------------------------"\n' + '\n' + ' exit 0\n' + '\n' + 'else\n' + '\n' + ' echo\n' + ' echo "Build not triggered internally"\n' + ' echo\n' + ' echo "------------------------------------------------------------------------------------------------------------------------"\n' + ' exit 0\n' + '\n' + 'fi\n' + '```\n' + '\n' + 'Ruby:\n' + '\n' + '{% highlight ruby %}\n' + 'require "gem"\n' + '\n' + 'number = 0\n' + 'regexp = /[abc]/\n' + '\n' + '# This is a comment\n' + 'class Person\n' + ' \n' + ' attr_accessor :name\n' + ' \n' + ' def initialize(attributes = {})\n' + ' @name = attributes[:name]\n' + ' end\n' + ' \n' + ' def self.greet\n' + ' "hello"\n' + ' end\n' + 'end\n' + '\n' + 'person1 = Person.new(:name => "Chris")\n' + 'puts "#{Person::greet} #{person1.name}\\n"\n' + '{% endhighlight %}\n' + '\n' + 'html:\n' + '\n' + '```html\n' + '\n' + '\n' + '\n' + ' \n' + ' Title\n' + ' \n' + '\n' + ' \n' + '

Heading

\n' + '

This is an example paragraph.

\n' + ' \n' + '\n' + '\n' + '```\n' + '\n' + 'css:\n' + '```css\n' + '.highlight pre {\n' + ' width: 100%;\n' + '}\n' + '\n' + '.highlight .hll {\n' + ' background-color: $base06;\n' + '}\n' + '.highlight {\n' + ' .c {\n' + ' /* Comment */\n' + ' color: $base04;\n' + ' }\n' + '}\n' + '```\n' + '\n' + 'Javascript:\n' + '\n' + '```javascript\n' + '$(document).ready(function() {\n' + ' // FitVids init\n' + ' $("#main").fitVids();\n' + '\n' + ' // Sticky sidebar\n' + ' var stickySideBar = function() {\n' + ' var show =\n' + ' $(".author__urls-wrapper button").length === 0\n' + ' ? $(window).width() > 1024 // width should match $large Sass variable\n' + ' : !$(".author__urls-wrapper button").is(":visible");\n' + ' if (show) {\n' + ' // fix\n' + ' $(".sidebar").addClass("sticky");\n' + ' } else {\n' + ' // unfix\n' + ' $(".sidebar").removeClass("sticky");\n' + ' }\n' + ' };\n' + '}\n' + '```\n' + '\n' + '

notice

{: .notice} \n' + '

primary

{: .notice--primary}\n' + '

info

{: .notice--info}\n' + '

warning

{: .notice--warning}\n' + '

success

{: .notice--success}\n' + '

danger

{: .notice--danger}\n' + '\n' + '
\n' + ' # Headline for the Notice\n' + '
\n' + ' Text for the notice\n' + '
', data: [Object], isEmpty: false, excerpt: '\n' + "Its been a long while since I sat and did programming, but between a life situation and the new technology from Apple for creating user interfaces (SwiftUI), I've been inspired to pickup again an idea I've been kicking around for 10 years.\n" + '\n' + '\n' + '\n' + 'SwiftUI simplifies designing interfaces\n' + 'Provides a fast means of iterating design\n' + 'Able to quickly see results\n' + 'Easy to mock in data\n' + '\n' + 'Buggy.\n' + 'Filled 3 bugs so far.\n' + '\n' + 'Swift:\n' + '\n' + '{% highlight swift %}\n' + ' override public func touchesBegan(_ touches: Set, with event: UIEvent?) {\n' + ' super.touchesBegan(touches, with: event)\n' + ' currentTouchPosition = touches.first?.location(in: self)\n' + '\n' + ' NSObject.cancelPreviousPerformRequests(withTarget: self)\n' + ' }\n' + '{% endhighlight %}\n' + '\n' + 'Swift:\n' + '\n' + '```swift\n' + 'def print_hi(name)\n' + ' puts "Hi, #{name}"\n' + 'end\n' + "print_hi('Tom')\n" + "#=> prints 'Hi, Tom' to STDOUT.\n" + '```\n' + '\n' + 'Bash: \n' + '```bash\n' + '\n' + '#!/usr/bin/env bash\n' + 'set -e # halt script on error\n' + '\n' + 'echo\n' + 'echo "' }, _stats: Promise { [Stats] }, _dataCache: { authors: [Object], navigation: [Object], 'ui-text': [Object], site: [Object], eleventy: [Object], pkg: [Object], layout: 'single', author_profile: true, read_time: true, share: true, related: true, title: 'SwiftUI', tags: [Array], category: 'Programming', page: [Object], collections: [Object] }, _usePermalinkRoot: undefined }, data: { authors: { robert_mcgovern: [Object] }, navigation: { main: [Array] }, 'ui-text': { en: [Object], 'en-US': [Object], 'en-CA': [Object], 'en-GB': [Object], 'en-AU': [Object], es: [Object], 'es-ES': [Object], 'es-CO': [Object], fr: [Object], 'fr-FR': [Object], 'fr-BE': [Object], 'fr-CH': [Object], tr: [Object], 'tr-TR': [Object], pt: [Object], 'pt-PT': [Object], 'pt-BR': [Object], it: [Object], 'it-IT': [Object], zh: [Object], 'zh-CN': [Object], 'zh-SG': [Object], 'zh-TW': [Object], 'zh-HK': [Object], de: [Object], 'de-DE': [Object], 'de-AT': [Object], 'de-CH': [Object], 'de-BE': [Object], 'de-LI': [Object], 'de-LU': [Object], ne: [Object], 'ne-NP': [Object], ko: [Object], 'ko-KR': [Object], ru: [Object], 'ru-RU': [Object], lt: [Object], 'lt-LT': [Object], gr: [Object], 'gr-GR': [Object], sv: [Object], 'sv-SE': [Object], 'sv-FI': [Object], nl: [Object], 'nl-BE': [Object], 'nl-NL': [Object], id: [Object], 'id-ID': [Object], vi: [Object], 'vi-VN': [Object], da: [Object], 'da-DK': [Object], pl: [Object], 'pl-PL': [Object], ja: [Object], 'ja-JP': [Object], sk: [Object], 'sk-SK': [Object], hu: [Object], 'hu-HU': [Object], ro: [Object], 'ro-RO': [Object], pa: [Object], 'pa-IN': [Object], fa: [Object], 'fa-IR': [Object], ml: [Object], 'ml-IN': [Object], th: [Object], 'th-TH': [Object], hi: [Object], 'hi-IN': [Object], ca: [Object], 'ca-ES': [Object], ga: [Object], 'ga-IE': [Object], fi: [Object], my: [Object], 'my-MM': [Object], no: [Object], 'no-NB': [Object], 'no-NN': [Object], he: [Object], 'he-IL': [Object], ar: [Object], 'ar-SD': [Object], 'ar-SA': [Object], 'ar-AE': [Object], 'ar-EG': [Object] }, site: { theme: 'minimal-mistakes-jekyll', minimal_mistakes_skin: 'neon', locale: 'en-US', title: 'TDN: RMCG', title_separator: '-', name: 'Robert McGovern', description: 'Random Things', url: 'https://tarasis.net', baseurl: '', repository: null, teaser: null, logo: '/assets/images/apple-touch-icon.png', masthead_title: '', subtitle: 'πŸ‘¨β€πŸ’» πŸšΆβ€β™‚οΈ πŸ’­ 🀯', breadcrumbs: false, breadcrumb_home_label: 'Home', breadcrumb_separator: '>', words_per_minute: 200, head_scripts: [Array], comments: [Object], staticman: [Object], atom_feed: [Object], search: true, search_full_content: true, search_provider: 'lunr', algolia: [Object], google_site_verification: null, bing_site_verification: null, yandex_site_verification: null, twitter: [Object], facebook: [Object], og_image: '/assets/images/bio-photo.jpg', social: [Object], analytics: [Object], author: [Object], footer: [Object], include: [Array], exclude: [Array], keep_files: [Array], encoding: 'utf-8', markdown_ext: 'markdown,mkdown,mkdn,mkd,md', strict_front_matter: true, liquid: [Object], markdown: 'kramdown', highlighter: 'rouge', lsi: false, excerpt_separator: '', incremental: false, kramdown: [Object], sass: [Object], permalink: '/:year/:month/:day/:title/', paginate: 10, paginate_path: '/page:num/', timezone: null, plugins: [Array], whitelist: [Array], category_archive: [Object], tag_archive: [Object], compress_html: [Object], collections: [Object], defaults: [Object], post_ext: 'markdown', page_ext: 'html', post_layout: 'single', page_layout: 'page', titlecase: true }, eleventy: { version: '2.0.0', generator: 'Eleventy v2.0.0', env: [Object] }, pkg: { name: 'tarasis.net', version: '2.0.0', description: 'Second generation of site using 11ty for building but using Jekyll theme Minimal Mistakes (with mods to make it work)', main: 'index.js', scripts: [Object], repository: [Object], keywords: [Array], author: 'Robert McGovern et all', license: 'MIT', devDependencies: [Object], dependencies: [Object] }, layout: 'single', author_profile: true, read_time: true, share: true, related: true, title: 'SwiftUI', tags: [ 'swiftui', 'programming', 'ios', 'swift' ], category: 'Programming', page: { excerpt: '\n' + "Its been a long while since I sat and did programming, but between a life situation and the new technology from Apple for creating user interfaces (SwiftUI), I've been inspired to pickup again an idea I've been kicking around for 10 years.\n" + '\n' + '\n' + '\n' + 'SwiftUI simplifies designing interfaces\n' + 'Provides a fast means of iterating design\n' + 'Able to quickly see results\n' + 'Easy to mock in data\n' + '\n' + 'Buggy.\n' + 'Filled 3 bugs so far.\n' + '\n' + 'Swift:\n' + '\n' + '{% highlight swift %}\n' + ' override public func touchesBegan(_ touches: Set, with event: UIEvent?) {\n' + ' super.touchesBegan(touches, with: event)\n' + ' currentTouchPosition = touches.first?.location(in: self)\n' + '\n' + ' NSObject.cancelPreviousPerformRequests(withTarget: self)\n' + ' }\n' + '{% endhighlight %}\n' + '\n' + 'Swift:\n' + '\n' + '```swift\n' + 'def print_hi(name)\n' + ' puts "Hi, #{name}"\n' + 'end\n' + "print_hi('Tom')\n" + "#=> prints 'Hi, Tom' to STDOUT.\n" + '```\n' + '\n' + 'Bash: \n' + '```bash\n' + '\n' + '#!/usr/bin/env bash\n' + 'set -e # halt script on error\n' + '\n' + 'echo\n' + 'echo "', date: 2020-03-05T11:10:48.355Z, inputPath: './src/_drafts/swiftui.md', fileSlug: 'swiftui', filePathStem: '/_drafts/swiftui', outputFileExtension: 'html', templateSyntax: 'liquid,md', url: '/_drafts/swiftui/', outputPath: 'dist/_drafts/swiftui/index.html' }, collections: { all: [Array], life: [Array], camino: [Array], caminodesantiago: [Array], webdev: [Array], site: [Array], frontendmentor: [Array], javascript: [Array], freecodecamp: [Array], programming: [Array], ios: [Array], swift: [Array], 'coding-challenges': [Array], jakobsweg: [Array], css: [Array], caminofrances: [Array], personal: [Array], webdevelopment: [Array], learning: [Array], html: [Array], swiftui: [Array], pages: [Array], posts: [Array], projects: [], tags: [Array] } }, page: { excerpt: '\n' + "Its been a long while since I sat and did programming, but between a life situation and the new technology from Apple for creating user interfaces (SwiftUI), I've been inspired to pickup again an idea I've been kicking around for 10 years.\n" + '\n' + '\n' + '\n' + 'SwiftUI simplifies designing interfaces\n' + 'Provides a fast means of iterating design\n' + 'Able to quickly see results\n' + 'Easy to mock in data\n' + '\n' + 'Buggy.\n' + 'Filled 3 bugs so far.\n' + '\n' + 'Swift:\n' + '\n' + '{% highlight swift %}\n' + ' override public func touchesBegan(_ touches: Set, with event: UIEvent?) {\n' + ' super.touchesBegan(touches, with: event)\n' + ' currentTouchPosition = touches.first?.location(in: self)\n' + '\n' + ' NSObject.cancelPreviousPerformRequests(withTarget: self)\n' + ' }\n' + '{% endhighlight %}\n' + '\n' + 'Swift:\n' + '\n' + '```swift\n' + 'def print_hi(name)\n' + ' puts "Hi, #{name}"\n' + 'end\n' + "print_hi('Tom')\n" + "#=> prints 'Hi, Tom' to STDOUT.\n" + '```\n' + '\n' + 'Bash: \n' + '```bash\n' + '\n' + '#!/usr/bin/env bash\n' + 'set -e # halt script on error\n' + '\n' + 'echo\n' + 'echo "', date: 2020-03-05T11:10:48.355Z, inputPath: './src/_drafts/swiftui.md', fileSlug: 'swiftui', filePathStem: '/_drafts/swiftui', outputFileExtension: 'html', templateSyntax: 'liquid,md', url: '/_drafts/swiftui/', outputPath: 'dist/_drafts/swiftui/index.html' }, inputPath: './src/_drafts/swiftui.md', fileSlug: 'swiftui', filePathStem: '/_drafts/swiftui', date: 2020-03-05T11:10:48.355Z, outputPath: 'dist/_drafts/swiftui/index.html', url: '/_drafts/swiftui/', templateContent: [Getter/Setter], content: [Getter] } --- content of object in collections.all { content: [Getter], data: { 'ui-text': [Object], authors: [Object], category: 'coding-challenges', collections: [Object], eleventy: [Object], navigation: [Object], page: [Object], pkg: [Object], site: [Object], tags: [Array], title: 'Swift Coding Challenge 3 and 4' }, date: 2020-04-22T22:50:03.539Z, filePathStem: '/_drafts/swift-coding-challenge-3-and-4', fileSlug: 'swift-coding-challenge-3-and-4', inputPath: './src/_drafts/swift-coding-challenge-3-and-4.md', outputPath: 'dist/_drafts/swift-coding-challenge-3-and-4/index.html', page: { date: 2020-04-22T22:50:03.539Z, filePathStem: '/_drafts/swift-coding-challenge-3-and-4', fileSlug: 'swift-coding-challenge-3-and-4', inputPath: './src/_drafts/swift-coding-challenge-3-and-4.md', outputFileExtension: 'html', outputPath: 'dist/_drafts/swift-coding-challenge-3-and-4/index.html', templateSyntax: 'liquid,md', url: '/_drafts/swift-coding-challenge-3-and-4/' }, template: Template { _cacheFinalContent: ' Challenge 3 \n' + ' Take two strings, random order of letters and compare if they contain the same letters \n' + ' This was very quickly done. I remembered about sorted \n' + ' Challenge 4 \n', _cacheRenderedContent: ' Challenge 3 \n' + ' Take two strings, random order of letters and compare if they contain the same letters \n' + ' This was very quickly done. I remembered about sorted \n' + ' Challenge 4 \n', _config: [TemplateConfig], _dataCache: [Object], _extensionMap: [EleventyExtensionMap], _frontMatter: [Object], _frontMatterDataCache: [Promise], _logger: [ConsoleLogger], _stats: [Promise], _templateRender: [TemplateRender], _usePermalinkRoot: undefined, behavior: [TemplateBehavior], extraOutputSubdirectory: '', filePathStem: '/_drafts/swift-coding-challenge-3-and-4', fileSlug: [TemplateFileSlug], fileSlugStr: 'swift-coding-challenge-3-and-4', inputContent: [Promise], inputDir: 'src', inputPath: './src/_drafts/swift-coding-challenge-3-and-4.md', isDryRun: false, isVerbose: true, linters: [], outputDir: 'dist', outputFormat: 'fs', parsed: [Object], readingPromise: [Promise], serverlessUrls: null, templateData: [TemplateData], transforms: [], writeCount: 0 }, templateContent: [Getter/Setter], url: '/_drafts/swift-coding-challenge-3-and-4/' },