{
	"version": "https://jsonfeed.org/version/1",
	"title": "Mark Alldritt",
	"icon": "https://micro.blog/Alldritt/avatar.jpg",
	"home_page_url": "https://Alldritt.micro.blog/",
	"feed_url": "https://Alldritt.micro.blog/feed.json",
	"items": [
			{
				"id": "http://Alldritt.micro.blog/2022/04/30/watchkit-learning-timeline.html",
				
				"content_html": "<p>WatchKit learning: timeline updates should be ever 0 minutes or longer. Multiple instances of a widget share the same widget extension process and state.</p>\n<img src=\"https://Alldritt.micro.blog/uploads/2022/1a365f4a8f.png\" width=\"277\" height=\"600\" alt=\"\" />\n",
				"date_published": "2022-04-30T13:25:13-07:00",
				"url": "https://Alldritt.micro.blog/2022/04/30/watchkit-learning-timeline.html"
			},
			{
				"id": "http://Alldritt.micro.blog/2022/04/30/something-to-try.html",
				
				"content_html": "<p>Something to try, Madeleines are my favourite cookie:  <a href=\"https://sugarfreelondoner.com/low-carb-keto-madeleines-almond-flour/\">Low Carb Keto Madeleines (Almond Flour) – Sugar Free Londoner</a></p>\n",
				"date_published": "2022-04-30T13:22:08-07:00",
				"url": "https://Alldritt.micro.blog/2022/04/30/something-to-try.html"
			},
			{
				"id": "http://Alldritt.micro.blog/2022/04/30/delight-upgrading-my.html",
				
				"content_html": "<p>Delight: upgrading my stereo and discovering that a run of piano chords in a Count Basie track are actually a series of two not pairs.</p>\n",
				"date_published": "2022-04-30T13:14:28-07:00",
				"url": "https://Alldritt.micro.blog/2022/04/30/delight-upgrading-my.html"
			},
			{
				"id": "http://Alldritt.micro.blog/2022/04/30/delight-getting-a.html",
				
				"content_html": "<p>Delight: getting a LEGO MINDSTORMS robot to stand up and balance its self on two wheels.</p>\n",
				"date_published": "2022-04-30T13:11:19-07:00",
				"url": "https://Alldritt.micro.blog/2022/04/30/delight-getting-a.html"
			},
			{
				"id": "http://Alldritt.micro.blog/2022/04/30/maximum-cuteness.html",
				
				"content_html": "<p>Delight: Maximum cuteness.</p>\n<img src=\"https://Alldritt.micro.blog/uploads/2022/300ac7842e.jpg\" width=\"600\" height=\"600\" alt=\"\" />\n",
				"date_published": "2022-04-30T00:03:51-07:00",
				"url": "https://Alldritt.micro.blog/2022/04/30/maximum-cuteness.html"
			},
			{
				"id": "http://Alldritt.micro.blog/2022/04/30/experimenting-with-widgetkit.html",
				
				"content_html": "<p>Experimenting with WidgetKit to understand how often the timeline refreshes.</p>\n",
				"date_published": "2022-04-30T00:02:05-07:00",
				"url": "https://Alldritt.micro.blog/2022/04/30/experimenting-with-widgetkit.html"
			},
			{
				"id": "http://Alldritt.micro.blog/2022/04/23/still-getting-used.html",
				
				"content_html": "<p>Still getting used to being a grandparent.</p>\n<img src=\"https://Alldritt.micro.blog/uploads/2022/71623f8258.jpg\" width=\"450\" height=\"600\" alt=\"\" />\n",
				"date_published": "2022-04-23T22:37:13-07:00",
				"url": "https://Alldritt.micro.blog/2022/04/23/still-getting-used.html"
			},
			{
				"id": "http://Alldritt.micro.blog/2022/04/23/this-will-be.html",
				
				"content_html": "<p>This will be my first post on Micro.blog.</p>\n",
				"date_published": "2022-04-23T22:36:20-07:00",
				"url": "https://Alldritt.micro.blog/2022/04/23/this-will-be.html"
			},
			{
				"id": "http://Alldritt.micro.blog/2020/09/26/bodyquiz-released.html",
				"title": "bodyQuiz 1.0 Released",
				"content_html": "<p><a href=\"https://apps.apple.com/ca/app/bodyquiz/id1476755480\">bodyQuiz</a> is a new game I developed in collaboration with Olav Krigolson, a Neuroscientist at U. Vic.  It teaches 1st and 2nd year Neuroanatomy students the structures of the brain.</p>\n<p><img src=\"http://markalldritt.com/wp-content/uploads/2020/09/IMG_3801.png\" alt=\"bodyQuiz\"></p>\n",
				"date_published": "2020-09-26T17:04:23-07:00",
				"url": "https://Alldritt.micro.blog/2020/09/26/bodyquiz-released.html",
				"tags": ["Late Night Software"]
			},
			{
				"id": "http://Alldritt.micro.blog/2020/09/10/regex-knife-released.html",
				"title": "RegEx Knife 2.0.2 Released",
				"content_html": "<p><a href=\"https://apps.apple.com/ca/app/regex-knife/id894169288\">RegEx Knife 2.0.2</a> is available in the App Store.  This releases addresses some bugs, including a couple of crashing issues.  It also introduces Dark Mode support.</p>\n<p><img src=\"http://markalldritt.com/wp-content/uploads/2020/09/IMG_3766.png\" alt=\"Screenshot\"></p>\n",
				"date_published": "2020-09-10T07:49:36-07:00",
				"url": "https://Alldritt.micro.blog/2020/09/10/regex-knife-released.html",
				"tags": ["Personal","RegEx Knife"]
			},
			{
				"id": "http://Alldritt.micro.blog/2018/10/12/posting-to-a.html",
				"title": "Posting to a Discourse forum from iOS Shortcuts",
				"content_html": "<p>I&rsquo;ve been experimenting with iOS Shortcuts and I have to say I really like it.  I was a fan of the Workflow app on which Shortcuts is based.  While Shortcuts uses a visual programming model similar to macOS&rsquo;s Automator, I find Shortcuts somehow much more usable.</p>\n<p>This <a href=\"https://forum.latenightsw.com/t/posting-to-a-discourse-forum-from-ios-shortcuts/1593\">post</a> on the <a href=\"http://forum.latenightsw.com\">Script Debugger Support Forum</a> demonstrates how to post a new topic to a Discourse forum using the Discourse API with Shortcuts.</p>\n<p>I had worked out the Discourse API issues previously when writing some AppleScript code to post a new topic so the task was simply a matter of figuring out how to accomplish the task in Shortcuts.</p>\n",
				"date_published": "2018-10-12T11:22:08-07:00",
				"url": "https://Alldritt.micro.blog/2018/10/12/posting-to-a.html",
				"tags": ["Apple","Shortcuts"]
			},
			{
				"id": "http://Alldritt.micro.blog/2018/09/24/macscripternet.html",
				"title": "MacScripter.net",
				"content_html": "<p>I&rsquo;m excited to announce that I have become the new host of the <a href=\"http://macscripter.net\">MacScripter.net</a> discussion forum.  MacScripter has been a long standing resource for information concerning macOS automation using technologies such as AppleScript, Automator, and JavaScript For Automation.</p>\n<p><a href=\"https://www.linkedin.com/in/geeksuit\">Ray Barber</a> established the site many many years ago and has grown it to the point where it is today with almost 30,000 members and an archive of 175,000 posts.  MacScripter is a core piece of the AppleScript and macOS automation landscape.  Links to MacScripter articles appear almost everywhere macOS automation is discussed.  This is all a testament to Ray&rsquo;s vision in creating MacScripter.net and to his support of the site over the years.  Ray has decided to step down and I&rsquo;m really pleased to be able to provide the resources needed to keep MacScripter.net going in the future.</p>\n<p>I sense we are at a point where automation of Apple products is seeing a resurgence.  The release of Shortcuts in iOS 12 suggests that Apple has become serious about automation on its mobile devices.  I feel this change will spur people to look for more opportunities to automate their Macs as well.  All of this represents a great opportunity for MacScripter to grow and become relevant to a new audience.</p>\n<p>MacScripter will remain more or less as it is.  It will continue to be a place to discuss topics related to macOS and iOS automation in a technology and product agnostic environment.</p>\n",
				"date_published": "2018-09-24T13:03:00-07:00",
				"url": "https://Alldritt.micro.blog/2018/09/24/macscripternet.html",
				"tags": ["Late Night Software","Apple","AppleScript","Personal"]
			},
			{
				"id": "http://Alldritt.micro.blog/2018/08/01/macbook-pro.html",
				"title": "2018 MacBook Pro?!?!",
				"content_html": "<p>Over the years, I&rsquo;ve been excited when the time came to replace my Mac laptop.  There was a sense that the new laptop would be vastly better that the old one.  New ports, more memory, faster, better display, better battery life.  The pinnacle for me has been the 2012 MacBook Pro Retina that I&rsquo;m about to replace.  I splurged and maxed the thing out and it has been amazing.</p>\n<p>This was the first SSD MacBook Pro, and its been a fabulous machine - apart from the difficulty of getting its battery replaced.  Only now, 6 years later, it is starting to feel slow.  16GB of memory just does not cut it when running Slack or doing Swift development in Xcode.  I also desperately want to run a 4/5K external monitor for my old man eyes.</p>\n<p>I decided to pass on the 2017 MacBook Pros because of their 16GB memory limit.  The keyboard issues that surfaced confirmed for me this was the right call.</p>\n<p>I was going to go with a iMac Pro, but now the 2018 MacBook Pro has arrived and most of the concerns seem to have been addressed.  But the keyboard - I tried one in the store yesterday and it sucks compared to the one on my 2012 machine.  It is really awful to type on.  How is this progress?  I use my mac ~10h each day and typing comfort is huge.  And then there is the loss of all the built in ports.  I use the CF card reader regularly.  Like everyone, I have a mountain of USA-A devices.  Its a mess.  The 2012 MacBook was thin enough for my needs.  I want a flexible and capable machine, not a thinner machine.</p>\n<p>I have to carry all kinds of crap around with me for my iPad Pro (keyboard, HDMI cables, card reader, etc) and it sucks (though I love the Apple Pencil).  Forget one of these adapters and you are sunk.  The thought of having to remember to carry all the different Mac adapters I may need with me is depressing.  Sure, USB-C is the future, but its not compelling right now.</p>\n<p>So here I am about to spend &gt;CDN$6K on a machine that feels like a total compromise.  I need the speed and the memory and the ability to drive a 5K monitor but almost everything else about it feels like a step backward.</p>\n<p>Apple in 2018 is not delivering a compelling mac laptop in way it did 5 years ago.</p>\n<p>And here&rsquo;s another change.  In the distant past, the price of &ldquo;pro&rdquo; Mac laptops always seemed to be about the same ~CDN$3K.  Each time you got more, but the price stayed roughly the same.  My 2012 MacBook was CDN$4K which I thought was extreme, but its lasted longer than any mac laptop I had before it.  But recently, the prices have gone crazy.  The 2TB, 32GB, i9 machine I&rsquo;m considering is over CDN$6K!  And all this for a machine that I&rsquo;m not terribly excited to own.</p>\n<p>Switching to Windows isn&rsquo;t an option because my work is revolves around Apple, and I&rsquo;m sure I would hate Windows, but looking over the fence at all the things happening in that hardware space, the MacBook Pro appears to be behind.</p>\n",
				"date_published": "2018-08-01T11:02:22-07:00",
				"url": "https://Alldritt.micro.blog/2018/08/01/macbook-pro.html",
				"tags": ["Apple","Personal"]
			},
			{
				"id": "http://Alldritt.micro.blog/2018/05/18/regex-knife-is.html",
				"title": "RegEx Knife 2.0.1 Is Coming",
				"content_html": "<p>I&rsquo;m working on the next RegEx Knife 2 maintenance release, version 2.0.1.  This release addresses a series of iOS 11 compatibility issues and adds support for named capture groups.</p>\n<p>iOS 11&rsquo;s regular expression engine handles named capture groups in the following ways:</p>\n<p>Regex: <code>(?&lt;name&gt;pattern)</code></p>\n<p>Substitutions: <code>${name}</code></p>\n<p>Here&rsquo;s how named capture groups are displayed in RegEx Knife:</p>\n<p><img src=\"http://markalldritt.com/wp-content/uploads/2018/05/IMG_1205.png\" alt=\"RegEx Knife showing named capture groups\"></p>\n<p>If you are want to help out by testing RegEx Knife, please get in tough with me via <a href=\"mailto:alldritt@latenightsw.com\">email</a> or <a href=\"https://twitter.com/alldritt\">Twitter</a>.</p>\n",
				"date_published": "2018-05-18T16:15:35-07:00",
				"url": "https://Alldritt.micro.blog/2018/05/18/regex-knife-is.html",
				"tags": ["RegEx Knife"]
			},
			{
				"id": "http://Alldritt.micro.blog/2017/06/27/ipad-frustrations-i.html",
				"title": "iPad Frustrations I",
				"content_html": "<p>Over the weekend I played in a tennis tournament and used a GoPro to record the final match.  I decided to edit the footage on my 12&quot; iPad Pro.</p>\n<p>Importing the footage from the GoPro was trivial using Apple&rsquo;s <a href=\"https://www.apple.com/ca/shop/product/MJYT2AM/A/lightning-to-sd-card-camera-reader?afid=p238%7CsyzDP6mS6-dc_mtid_1870765e38482_pcrid_142913545083_&amp;cid=aos-CA-kwgo-pla-cth--slid--product-MJYT2AM/A-CA\">Lightning SD Card Reader</a>.  iMovie on the iPad worked very well.</p>\n<p>Problems started when it came time to share the finished movie with the other players.  The result was over an hour and a half long, and weighed in at over 10GB when saved out as a 1080p movie.  This is too large for my DropBox account and my iCloud account.  What to do?</p>\n<p>First idea: save it back to an SD card.  Turns out you cannot do this.</p>\n<p>Next idea: try and Air Drop the file to my Mac.  Seemed to work but the resulting file was only a few hundred MB and would not open - sigh.</p>\n<p>Next idea: save it to a USB memory stick.  Can&rsquo;t do this either even though I do have a lightning USB adapter.</p>\n<p>In the end, I had to FTP the file (using <a href=\"https://panic.com/transmit-ios/\">Panic&rsquo;s Transmit</a>) from the iPad to my Mac.  From there I could copy the file to a USB memory stick.  Side note: When sharing a massive file like this, the iPad should not go to sleep in the middle and abort the share operation - it sucked having to baby sit the thing to keep it from going to sleep.</p>\n<p>There is so much about the iPad that I really like.  I take it with me almost everywhere.  I pretty much live in <a href=\"http://linea-app.com\">Linea</a>, <a href=\"https://www.omnigroup.com/omnioutliner/ios/\">OmniOutliner</a>, <a href=\"https://tapbots.com/tweetbot/\">Tweetbot</a>, Slack, Mail and Safari.  But when I try and do seemingly simple things with it I run aground, over and over again.  iOS 11 is a huge improvement but it does not address this kind of issue.</p>\n",
				"date_published": "2017-06-27T14:15:00-07:00",
				"url": "https://Alldritt.micro.blog/2017/06/27/ipad-frustrations-i.html",
				"tags": ["Personal","iOS"]
			},
			{
				"id": "http://Alldritt.micro.blog/2017/05/05/find-my-apple.html",
				"title": "Find My Apple Pencil, Part II",
				"content_html": "<p>As a follow up to my <a href=\"http://markalldritt.com/?p=1209\">We Need a Find My Apple Pencil Feature</a> post, I&rsquo;ve been experimenting with the Bluetooth Scanner apps in the app store.</p>\n<p>I picked <a href=\"https://itunes.apple.com/ca/app/bluetooth-smart-scanner/id509978131?mt=8\">one of the free ones</a> and found out an interesting thing.</p>\n<p>Presumably to save energy, the Apple Pencil does not broadcast its existence unless it is physically moved.  You have to touch or jostle it in order for it to be revealed by these scanner apps:</p>\n<p><img src=\"http://markalldritt.com/wp-content/uploads/2017/05/IMG_0416.png\" alt=\"Bluetooth Scanner\"></p>\n",
				"date_published": "2017-05-05T13:34:51-07:00",
				"url": "https://Alldritt.micro.blog/2017/05/05/find-my-apple.html",
				"tags": ["Personal","iOS"]
			},
			{
				"id": "http://Alldritt.micro.blog/2017/05/05/peer.html",
				"title": "PEER",
				"content_html": "<p>My new project has finally begun Beta testing. Its an iPhone/iPad app for neuroscientists doing research. The app uses a <a href=\"http://www.choosemuse.com\">MUSE EEG headset</a> to record brainwave data while the user plays simple games that create controlled stimuli. We are starting with a game called Oddball and have plans to implement a series of standard tests used in neuroscience research. Armed with this tool, and in collaboration with U.Vic., we hope to be able to collect normative data about a range of brain related conditions in the population.</p>\n<p><img src=\"http://markalldritt.com/wp-content/uploads/2017/05/EEGRecorderMockup512.png\" alt=\"Mockup\"></p>\n",
				"date_published": "2017-05-05T12:51:42-07:00",
				"url": "https://Alldritt.micro.blog/2017/05/05/peer.html",
				"tags": ["Personal","iOS"]
			},
			{
				"id": "http://Alldritt.micro.blog/2017/03/20/regex-knife-available.html",
				"title": "RegEx Knife 2 Available in the App Store",
				"content_html": "<p>I have updated my <a href=\"http://markalldritt.com/?page_id=800\">RegEx Knife</a> iOS regular expression editing and testing utility so that it works on both the iPhone and the iPad.  Check it out on the <a href=\"https://itunes.apple.com/us/app/regex-knife/id894169288\">App Store</a>!</p>\n<p><img src=\"http://markalldritt.com/wp-content/uploads/2014/06/RegExKnifeII.png\" alt=\"RegEx Knife 2 on iPhone\"></p>\n<p>This version of RegEx knife supports iOS 10 niceties like split-screen, hand off and more.</p>\n",
				"date_published": "2017-03-20T12:47:53-07:00",
				"url": "https://Alldritt.micro.blog/2017/03/20/regex-knife-available.html",
				"tags": ["Personal","RegEx Knife"]
			},
			{
				"id": "http://Alldritt.micro.blog/2017/03/09/markslib.html",
				"title": "MarksLib",
				"content_html": "<p>My MarksLib AppleScript library, which is featured in some of my Script Debugger tutorial videos, is now part of my <a href=\"https://github.com/alldritt/AppleScriptLibraries\">AppleScript Libraries repository on GitHub</a>.</p>\n<p>MarksLib is a collection of handlers for everyday operations that I find myself using in almost every script I write.  There are tools for reading and writing text files, string substitution, converting between strings and arrays and more.</p>\n<h2 id=\"installation\">Installation</h2>\n<p>Enter the following command in the <code>Terminal</code> application to install the latest version of MarksLib on your machine:</p>\n<pre><code>curl https://raw.githubusercontent.com/alldritt/AppleScriptLibraries/master/MarksLib.applescript | osacompile -o ~/Library/Script\\ Libraries/MarksLib.scpt\n</code></pre>\n<h2 id=\"usage\">Usage</h2>\n<p>MarksLib provides the following handlers:</p>\n<h3 id=\"readfromfile\">readFromFile</h3>\n<p>The <code>readFromFile(theFile)</code> handler reads the contents of a text file.  The <code>theFile</code> parameter can take many forms:</p>\n<ul>\n<li>full HFS path (e.g. <code>readFromFile(&quot;Macintosh HD:Users:Mark:Desktop:file.txt&quot;)</code>)</li>\n<li>full POSIX path (e.g. <code>readFromFile(&quot;/Users/Mark/Desktop/file.txt&quot;)</code>)</li>\n<li>relative POSIX path (e.g.) (<code>readFromFile(&quot;~/Desktop/file.txt&quot;)</code>)</li>\n<li>alias (e.g. <code>readFromFile(alias &quot;Macintosh HD:Users:Mark:Desktop:file.txt&quot;)</code>)</li>\n<li>file reference (e.g. <code>readFromFile(file &quot;Macintosh HD:Users:Mark:Desktop:file.txt&quot;)</code>)</li>\n</ul>\n<h3 id=\"writetofile\">writeToFile</h3>\n<p>The <code>writeToFile(theFile, theData)</code> handler writes the contents of a variable to a text file.  The <code>theFile</code> parameter can take many forms:</p>\n<ul>\n<li>full HFS path (e.g. <code>readFromFile(&quot;Macintosh HD:Users:Mark:Desktop:file.txt&quot;)</code>)</li>\n<li>full POSIX path (e.g. <code>readFromFile(&quot;/Users/Mark/Desktop/file.txt&quot;)</code>)</li>\n<li>relative POSIX path (e.g.) (<code>readFromFile(&quot;~/Desktop/file.txt&quot;)</code>)</li>\n<li>alias (e.g. <code>readFromFile(alias &quot;Macintosh HD:Users:Mark:Desktop:file.txt&quot;)</code>)</li>\n<li>file reference (e.g. <code>readFromFile(file &quot;Macintosh HD:Users:Mark:Desktop:file.txt&quot;)</code>)</li>\n</ul>\n<p>The <code>theData</code> parameter should be a string.</p>\n<h3 id=\"replacetext\">replaceText</h3>\n<p>The <code>replaceText(theString, fString, rString)</code> handler replaces all occurrences of <code>fString</code> in <code>theString</code> with <code>rString</code>.</p>\n<pre><code>use AppleScript version &quot;2.4&quot; -- Yosemite (10.10) or later\nuse MarksLib : script &quot;MarksLib&quot; version &quot;1.0&quot;\n\nMarksLib's replaceText(&quot;the quick brown fox jumped over the lazy dog&quot;, &quot;the&quot;, &quot;xxx&quot;)\n--&gt;&quot;xxx quick brown fox jumped over xxx lazy dog&quot;\n</code></pre>\n<h3 id=\"trim\">trim</h3>\n<p>The <code>trim(theString)</code> handler trims leading and trailing whitespace from a string.  The functional also works on arrays of strings, returning an array of trimmed strings.</p>\n<pre><code>use AppleScript version &quot;2.4&quot; -- Yosemite (10.10) or later\nuse MarksLib : script &quot;MarksLib&quot; version &quot;1.0&quot;\n\nMarksLib's trim(&quot;  hello world  &quot; &amp; return)\n--&gt;&quot;hello world&quot;\nMarksLib's trim({&quot; abc &quot;, &quot;1234   &quot;, &quot;   &quot;})\n--&gt;{&quot;abc&quot;, &quot;1234&quot;, &quot;&quot;}\n</code></pre>\n<h3 id=\"split\">split</h3>\n<p>The <code>split(theString, theSeparator)</code> handler splits a string into an array of strings.</p>\n<pre><code>use AppleScript version &quot;2.4&quot; -- Yosemite (10.10) or later\nuse MarksLib : script &quot;MarksLib&quot; version &quot;1.0&quot;\n\nMarksLib's split(&quot;1, 2, 3, 4&quot;, &quot;,&quot;)\n--&gt;{&quot;1&quot;, &quot; 2&quot;, &quot; 3&quot;, &quot; 4&quot;}\nMarksLib's trim(MarksLib's split(&quot;1, 2, 3, 4&quot;, &quot;,&quot;))\n--&gt;{&quot;1&quot;, &quot;2&quot;, &quot;3&quot;, &quot;4&quot;}\n</code></pre>\n<h3 id=\"join\">join</h3>\n<p>The <code>|join|(theString, theSeparator)</code> handler joins an array of strings together into a single string.</p>\n<pre><code>use AppleScript version &quot;2.4&quot; -- Yosemite (10.10) or later\nuse MarksLib : script &quot;MarksLib&quot; version &quot;1.0&quot;\n\nMarksLib's join({&quot;hello&quot;, &quot;world&quot;}, &quot; &quot;)\n--&gt;{&quot;hello world&quot;}\nMarksLib's join(MarksLib's trim(MarksLib's split(&quot;1, 2, 3, 4&quot;, &quot;,&quot;)), &quot;-&quot;)\n--&gt;{&quot;1-2-3-4&quot;} \n</code></pre>\n<h3 id=\"formatforjson\">formatForJSON</h3>\n<p>The <code>formatForJSON(theValue)</code> handler formats a string so that it is suitable for use as a value in a JSON structure.</p>\n<pre><code>use AppleScript version &quot;2.4&quot; -- Yosemite (10.10) or later\nuse MarksLib : script &quot;MarksLib&quot; version &quot;1.0&quot;\n\nMarksLib's formatForJSON(&quot;My name is \\&quot;Mark\\&quot;&quot;)\n--&gt;&quot;My name is \\&quot;Mark\\&quot;&quot;\n</code></pre>\n<h3 id=\"formatforcsv\">formatForCSV</h3>\n<p>The <code>formatCSVString(theValue)</code> handler formats a string so that is suitable for use as a value in a CSV file.</p>\n<pre><code>use AppleScript version &quot;2.4&quot; -- Yosemite (10.10) or later\nuse MarksLib : script &quot;MarksLib&quot; version &quot;1.0&quot;\n\nMarksLib's formatCSVString(&quot;Nothing special&quot;)\n--&gt;&quot;Nothing special&quot;\nMarksLib's formatCSVString(&quot;My name is \\&quot;Mark\\&quot;&quot;)\n--&gt;&quot;My name is &quot;&quot;Mark&quot;&quot;&quot;\n</code></pre>\n",
				"date_published": "2017-03-09T12:35:43-07:00",
				"url": "https://Alldritt.micro.blog/2017/03/09/markslib.html",
				"tags": ["AppleScript"]
			},
			{
				"id": "http://Alldritt.micro.blog/2017/03/09/we-need-a.html",
				"title": "We Need a Find My Apple Pencil Feature",
				"content_html": "<p>Hearing about the Find My AirPods feature Apple is introducing reminds me that we need the same thing for the Apple Pencil.  I recently lost one and having some way of seeing if it was nearby would have been very helpful.  Replacing the Apple Pencil was expensive and I find I&rsquo;m constantly anxious that I&rsquo;ll loose the thing when I&rsquo;m away from my office with my iPad Pro.</p>\n",
				"date_published": "2017-03-09T10:22:32-07:00",
				"url": "https://Alldritt.micro.blog/2017/03/09/we-need-a.html",
				"tags": ["Personal","iOS"]
			},
			{
				"id": "http://Alldritt.micro.blog/2017/03/07/simple-iphone-app.html",
				"title": "Simple iPhone App Mockups",
				"content_html": "<p>I&rsquo;ve been looking for nice ways to present iPhone application mockups and today I came across these free attractive mockups on the <a href=\"http://ui8.net\">UI8</a> site:</p>\n<p><img src=\"http://markalldritt.com/wp-content/uploads/2017/03/SimpleMockupPage.png\" alt=\"SimpleMockup\"></p>\n<p>There are <a href=\"https://ui8.net/products/simple-mockups\">light</a> (pictured) and <a href=\"https://ui8.net/products/simple-mockups-dark\">dark</a> versions available.</p>\n<p>As you can see, there are several types of muckup offered ranging from 3 screens to 1 in various orientations.</p>\n<p>##Example</p>\n<p>Using the <a href=\"https://ui8.net/products/simple-mockups\">UI8 light mockup</a>, I was able to create this image for my <a href=\"https://github.com/alldritt/TennisNotes\">Tennis Cards</a> application:</p>\n<p><img src=\"http://markalldritt.com/wp-content/uploads/2017/03/SimpleMockupExample.png\" alt=\"Tennis Cards\"></p>\n<p>##How To</p>\n<p>Here&rsquo;s a short video demonstration of how my example image was created:</p>\n<p>[embed]<a href=\"http://www.youtube.com/watch?v=82qo4Bou-kk%5B/embed%5D\">www.youtube.com/watch</a></p>\n",
				"date_published": "2017-03-07T13:28:19-07:00",
				"url": "https://Alldritt.micro.blog/2017/03/07/simple-iphone-app.html",
				"tags": ["Personal","iOS"]
			},
			{
				"id": "http://Alldritt.micro.blog/2017/03/02/animated-record-button.html",
				"title": "Animated Record Button with PaintCode",
				"content_html": "<p>Here is an example of how to use <a href=\"https://www.paintcodeapp.com\">PaintCode</a> to create an animated button.</p>\n<p>The code for this project is available on <a href=\"https://github.com/alldritt/RecordButton\">GitHub</a>.</p>\n<p>##Background</p>\n<p>I wanted to create a record/stop button for a project I&rsquo;m working on that mirrored the appearance of the record/stop button found in Apple&rsquo;s iOS Camera Video recorder and Voice Recorder applications.</p>\n<p><img src=\"http://markalldritt.com/wp-content/uploads/2017/03/VoiceRecorder.gif\" alt=\"Voice Recorder\"></p>\n<p>##PaintCode Design</p>\n<p>PaintCode makes creating simple designs like this very simple.</p>\n<p><img src=\"http://markalldritt.com/wp-content/uploads/2017/03/PaintCode.gif\" alt=\"PaintCode\"></p>\n<p>I have a square canvas in which there are two concentric circles.  The outer circle is the button&rsquo;s frame (white), and the inner circle is the tappable button (red).</p>\n<p>Using PaintCode&rsquo;s expressions I have two parameters:</p>\n<ul>\n<li>isPressed, a boolean, controls the color used to draw the inner circle</li>\n<li>isRecording, a fraction (0.0-&gt;1.0) controls the transition of the inner circle from a circle to a smaller rounded square</li>\n</ul>\n<p>##The Code</p>\n<p>When the button is tapped, isPressed is set to true until the tap ends.  When the tap ends, the value of isRecording is animated from 0.0 -&gt; 1.0 or 1.0 to 0.0 depending on the state of the button.  That&rsquo;s it.</p>\n<p>Here is the result:</p>\n<p><img src=\"http://markalldritt.com/wp-content/uploads/2017/03/RecordButton.gif\" alt=\"RecordButton\"></p>\n",
				"date_published": "2017-03-02T13:59:10-07:00",
				"url": "https://Alldritt.micro.blog/2017/03/02/animated-record-button.html",
				"tags": ["iOS","PaintCode"]
			},
			{
				"id": "http://Alldritt.micro.blog/2016/11/24/sigmaswiftstatistics-for-swift.html",
				"title": "SigmaSwiftStatistics for Swift Playgrounds",
				"content_html": "<p>Sigma Playground allows you to use <a href=\"https://github.com/evgenyneu/SigmaSwiftStatistics\">SigmaSwiftStatistics</a> in <a href=\"http://www.apple.com/swift/playgrounds/\">Swift Playgrounds</a> on the iPad.</p>\n<p><img src=\"http://markalldritt.com/wp-content/uploads/2016/11/Example.png\" alt=\"IMG_0474.png\"></p>\n<p>The Sigma Playground can be downloaded here:</p>\n<p><a href=\"https://github.com/alldritt/Sigma-Playground/releases/download/1.0/Sigma.playground.zip\">Sigma.playground.zip</a></p>\n<p>This screencast demonstrates how to <a href=\"https://s3.amazonaws.com/latenightsw.com/SigmaInstall.mp4\">install the Sigma Playground on your iPad</a>:</p>\n<p>The sources for the Sigma Playground are <a href=\"https://github.com/alldritt/Sigma-Playground\">available on GitHub</a>.</p>\n<img src=\"https://Alldritt.micro.blog/uploads/2022/524fbf0a29.jpg\" /> \n",
				"date_published": "2016-11-24T13:44:40-07:00",
				"url": "https://Alldritt.micro.blog/2016/11/24/sigmaswiftstatistics-for-swift.html",
				"tags": ["Swift","Apple"]
			},
			{
				"id": "http://Alldritt.micro.blog/2016/11/24/macbook-pros-gb.html",
				"title": "2016 MacBook Pro's 16GB RAM Limit",
				"content_html": "<p>A lot has been written about how Apple&rsquo;s new MacBook Pro maxes out at 16GB of RAM.  Some argue that 16GB is enough for almost anyone, and therefore it is not a real problem.  I disagree.</p>\n<p>Back when I bought my 2012 MacBook Pro Retina, I maxed out its memory and got 16GB RAM.  This was a huge extravagance and at the time.  It was hard to use more than 8-10GB of RAM.  However, as the years passed, the macOS has used more resources and so has Xcode.  Now, almost 5 years later, my machine fully utilizes that 16GB of RAM.</p>\n<p><img src=\"http://markalldritt.com/wp-content/uploads/2016/11/RamUsage.png\" alt=\"Ram Usage\"></p>\n<p>Given what these new machines cost, I expect to be using it for several years.  I anticipate that 2-3 years from now, 16GB RAM is going to feel very cramped.  At that point, the only option will be a new machine.</p>\n<p>I&rsquo;m torn.  My current MacBook Pro Retina is the best Apple laptop I&rsquo;ve ever owned.  <a href=\"http://markalldritt.com/?p=960\">I like it a lot</a>.  I <strong>really</strong> want to move to a retina <a href=\"http://www.apple.com/ca/shop/favorites\">(5K) external monitor</a> except that my current machine&rsquo;s Thunderbolt 1 ports are unable to do this.  The new MacBook Pro solves this problem, but the memory issue gives me pause.  I may just have the battery replaced and sit on my hands for another year to see what happens.</p>\n",
				"date_published": "2016-11-24T12:06:13-07:00",
				"url": "https://Alldritt.micro.blog/2016/11/24/macbook-pros-gb.html",
				"tags": ["Apple","Personal"]
			},
			{
				"id": "http://Alldritt.micro.blog/2016/09/16/fancydroplet.html",
				"title": "FancyDroplet",
				"content_html": "<p>As a side project I am working on an improved AppleScript droplet shell.  My goal is to create a better AppleScript droplet experience by providing a better UI for receiving dropped files and offering a way of picking files to process via integrated Spotlight document searching (you&rsquo;ll recognize this as being based on Script Debugger&rsquo;s Open Quickly feature).  Additionally, I want to give droplet scripts an opportunity to clean up if the user stops or quits the script.</p>\n<img src=\"http://forum.latenightsw.com/uploads/default/original/1X/48dcc81ff17f7392e11c0cacafd984791a84da77.gif\" width=\"630\" height=\"460\">\n<p><strong><a href=\"http://forum.latenightsw.com/t/downloading-using-fancydroplet/256\">Download &amp; Documentation</a></strong></p>\n",
				"date_published": "2016-09-16T15:53:15-07:00",
				"url": "https://Alldritt.micro.blog/2016/09/16/fancydroplet.html",
				"tags": ["AppleScript"]
			}
	]
}
