In this zany sequel, time-traveling duo Marty McFly (Michael J. Fox) and Dr. Emmett Brown (Christopher Lloyd) return from saving Marty’s future son from disaster, only to discover their own time transformed. In this nightmarish version of Hill Valley, Marty’s father has been murdered and Biff Tannen, Marty’s nemesis, has profited. After uncovering the secret to Biff’s success — a sports almanac from the future — Marty and the Doc embark on a quest to repair the space-time continuum.


  • A Couple of Changes for Apple Developers

    A Couple of Changes for Apple Developers

    Over the past week there have been a couple of changes for Apple Developers. One only affects developers while the second also affects customers.

    Apple Small Business Developer applications are now open

    Applications for Apple’s Small Business developer program began on Thursday, December 3rd. If you enroll by December 18th, 2020 at 10:00 am Pacific time you will receive the benefits of the program. To recap, if you earned less than $1m per year in Apple’s App Stores you are eligible to have a reduced commission of 15% instead of 30%. If you go above this amount in a year, Apple will receive a 30% commission for all sales after $1 million, as well as the following year. You can read a full-recap here. There have been a couple of additional details provided.

    App transfers are not allowed while participating in the program. If you initiate an app transfer after December 31, 2020, or accept a transfer of an app that was initiated after December 31, 2020, you will no longer be eligible to participate in program.

    This makes sense to some degree, because typically indie developers are not transferring apps, but that is not always the case. A second clarification on what happens if you enroll after December 18th, is also outlined.

    If you’re already a member of the Apple Developer Program and submit your enrollment for the App Store Small Business Program after December 18, 2020, at 10 a.m. PST, your proceeds will be adjusted fifteen (15) days after the end of the fiscal calendar month in which your enrollment is approved. For example, if your enrollment is approved on February 10, 2021, your proceeds are adjusted starting March 14, 2021.

    Again, this aspect of it makes sense, but some time is probably needed to make the actual adjustments. There is further information available on Apple’s Developer website, including a link to actually enroll. This change will only affect developers, however the next item will affect both developers and their customers.

    Family Sharing enabled on in-app purchases

    If you are a developer and you have in-app purchases in your apps, you may be able to enable family-sharing on them; should you choose to do so. It is quite common for one family member to make an in-app purchase and want to share that with their other family members. However, until now this has not been possible. To enable family sharing on your in-app purchases, perform the following steps:

    1. Log in to App Store Connect.
    2. Click on “My Apps” to bring up a list of your applications.
    3. Click on the app where you want to enable family sharing of your in-app purchase.
    4. On the left-hand side under “In-App Purchases”, click on “Manage”. A list of available in-app purchases should be appear when the page loads.
    5. Click on the in-app purchase that you want to manage.
    6. Under the “Family Sharing” section, click on the “Turn On” link. A popup will appear.
    7. The popup states “This in-app purchase will be able to be shared by everyone in a family group. NOTE: Once you confirm, you won’t be able turn off this feature.” Click on “Confirm” to enable family sharing for the in-app purchase .

    There are two things to note. First, and most importantly, once you have enabled family sharing for an in-app purchase, it cannot be turned off. Secondly, not all in-app purchases are eligible for family sharing. Only non-consumable in-app purchases and subscriptions are eligible for family sharing. You can learn more on the App Store Connect help page for Family Sharing of In-App Purchases.

    Both of these changes are welcome for developers. Customers will be able to benefit by not being required to make multiple purchases and instead can share existing purchases.

  • Apple Announces ‘Small Business’ App Store Program

    Apple Announces ‘Small Business’ App Store Program

    Today Apple announced that beginning January 1st, 2021, developers can apply for a new App Store program specifically designed at small businesses. Here is how it will work:

    If you make less than $1m in a calendar year, Apple will take a 15% cut, instead of the usual 30% cut. If you make $1m or more in a calendar year, Apple will continue to take the standard 30% cut. This is across ALL of your apps for a particular developer.

    Here is how Apple is defining the rules of the program:

    The vast majority of developers on the App Store who sell digital goods and services will qualify for the Small Business Program.

    * Existing developers who made up to $1 million in proceeds in 2020 for all their apps, as well as developers new to the App Store, can qualify for the program and the reduced commission.
    * If a participating developer surpasses the $1 million threshold, the standard commission rate will apply for the remainder of the year.
    * If a developer’s business falls below the $1 million threshold in a future calendar year, they can re-qualify for the 15% commission the year after.

    While there will likely only be a small number of developers who will fall into the making of $1m one year and less than that the next, it still can be a significant difference, particularly if you have a spike in sales for one year, but they falter the next. It should be noted that a vast majority of developers will fall into the 15% commission rate, but there will be some that do not.

    On the surface, this seems like a good thing. However, I am not entirely sure. I will likely apply for it, because 15% commission is better than a 30% commission, but in the long run it will not likely make a material difference, as my app sales have not been super robust.

    I am going to quote John Gruber’s post on this, because he sums it up quite nicely

    Let’s say a new developer enters the program (and thus qualifies for the 15 percent commission) and their apps are on pace to generate $1.2M in sales. At 15 percent, $1.2M in revenue would generate $1.02M in earnings — putting them over the threshold, so their entire earnings the next year would face a 30 percent commission. If their sales remain flat the next year, the same $1.2M in revenue would earn them only $840K at 30 percent. They’d have to generate $1.5M in revenue to earn the same profit that $1.2M in sales brought them the year before. Basically, if the end of the year draws near and a developer in the Small Business Program has revenue approaching $1.2M, they’re incentivized to pull their apps or reduce their prices to keep from going over the threshold.

    We will not know all of the full details until December, but it is good to see Apple is looking to adapt the App Store, but I doubt it is because they wanted to, it is likely due to regulatory pressure coming down the pike.

    Source: Apple, DaringFireball

  • Swift Playgrounds for Mac Now Available

    Swift Playgrounds for Mac Now Available

    In 2014 Apple introduced a new programming language called Swift. Swift took the best of existing programming languages and wrapped it into one. In 2016 Apple introduced a new way to work with Swift, called Swift Playgrounds.

    Swift Playgrounds are, as the name implies, areas where you can play with the different aspects of Swift within a single area. Swift Playgrounds was introduced for iOS as an iPad-only app. Swift Playgrounds is no longer an iPad exclusive with the release of Swift Playgrounds on for macOS Catalina.

    Swift Playgrounds on macOS is a Catalyst app. This means that it is the same code that is used with the iOS version of Swift Playgrounds. With this, it means that the app is the same as the iOS version, just available on macOS. Now that Swift Playgrounds is available on macOS you are able to use the existing playgrounds that you used on iOS on your Mac and vice versa. Additionally, any changes that you make on either platform will synchronize to the other.

    The fact that Swift Playgrounds is on both platforms will allow those who may only have access to Mac and not an iPad the ability to learn how to code using Swift Playgrounds on the Mac. There is a version of Swift Playgrounds available within Xcode, but that does not have all of the same features, like code completion, the tutorials, and connectivity to the bluetooth accessories like Sphero.

    If you have ever wanted to learn how to program, Swift Playgrounds is a great tool for doing so and now you can use it on your Mac. You can download Swift Playgrounds for free on the Mac App Store today. It does require macOS 10.15.3 or later.

    Swift Playgrounds on macOS
  • Apple Introduces Swift Crypto

    Apple Introduces Swift Crypto

    There are many things that can mark the maturity of a programming language. Things like Application Binary Interface, or ABI, stability, Application Programmer Interface, or API, consistency, the re-working of the language syntax, or the inclusion of a vital feature within the language. It has been five and half years since Apple introduced its own programing language, Swift.

    In the years since its introduction Swift has undergone a huge transformation since its initial release. With Swift 3, the entire syntax of the language was redone so that it had a consistent naming and its syntax was significantly shortened. Swift 5 introduced a new Swift-only interface language called SwiftUI. and with Swift 5.1, ABI stability came into existence. One thing that has been missing from Swift has been its own native Cryptographic library. That has now changed.

    Swift Crypto

    At the dot Swift conference Apple introduced a new feature to the Swift programming language, Swift Crypto. Swift Crypto is an open-source re-implementation of Apple’s objective-c framework CryptoKit. There are a few things that make Swift Crypto a bit different from other cryptographic frameworks.

    The first is that Swift Crypto is not built into the Swift language itself. Instead, it is implemented as a Swift Package. This has a couple of added benefits. The first benefit is because it is a Swift Package, it can be independently updated outside of the core Swift language. This means that should a vulnerability be found in the package or its implementation it can be fixed and a new release be made. Similarly, if new algorithms become standard, these too can be implemented without requiring a new version of Swift. Furthermore, this means that if you need to keep on an older version of a language you do not need to sacrifice security.

    The second benefit is that this package will work on all of Apple’s platforms, macOS, iOS, tvOS, and watchOS, as well a on Linux. The fact that the package will work on Linux means that both your server side code and client code can use the same cryptographic libraries.


    Swift Crypto uses Google’s BoringSSL framework for implementing the cryptographic primitives and therefore does not re-implement these, but only on non-Apple Platforms. If you use Swift Crypto on Apple’s platforms, it defers to CryptoKit. That does not mean that you should not use Swift Crypto within your project though. While it will defer to CryptoKit, using Swift Crypto will provide you a consistent interface across all platforms, which will make your code easier to maintain.

    Secure Enclave

    Apple’s native CryptoKit APIs implements some interfaces to Apple’s security hardware processor, called Secure Enclave. Because Swift Crypto will work on both Apple’s platforms as well as Linux, results in Swift Crypto not implementing these APIs. Hence, if you need to utilize the Secure Enclave APIs, you will still need to use the CryptoKit APIs to implement these.

    Closing Thoughts

    The addition of a Swift-native Cryptographic library will make it easier in a couple of ways. First, by allowing the same Swift Package to be used across Apple’s platforms as well as Linux. While Swift Crypto will not implement the Secure Enclave APIs, any implementations made within CryptoKit will also be done within Swift Crypto.

    Being a Swift Package, Swift Crypto can be kept up to date with the changing landscape of cryptography independent of relying on a new version of Swift to have any changes implemented.

    The addition of Swift Crypto should allow a consistent implementation between server-side code as well as client code making it easier to implement the features, regardless of platform. Swift Crypto does require Swift 5.1 or later and the package is semantically versioned and, as of this writing, is at version 1.0.0. If I need to implement any cryptographic items within my projects, I will likely use Swift Crypto


  • Upcoming Changes for Apple Developers

    Upcoming Changes for Apple Developers

    When you sign up to be an Apple Developer one of the things that you do is agree to abide by App Store Review Guidelines. These guidelines change from time to time depending on technology, the needs of developers, and the limitations that Apple wants/needs to apply.

    Last June the guidelines were modified and two additions were made. These are regarding “HTML5 Apps” and “Updates in the Kids Category”. There are some changes for both that will go into effect on March 3rd, 2020. Let us look at each of the changes.

    HTML 5 Apps

    Before there were native apps on iOS there were HTML5 apps, which was referred to as a “Sweet Solution”. While this worked, it was not nearly as elegant as using a native application. A majority of applications in use today are built entirely with their native SDKs and do not require any external code. There are some apps that may require some code that is downloaded from another server. This is possible with Apple’s platforms. However, there are some limitations regarding the code that can be downloaded.

    Specifically, HTML5 apps cannot contain or run code that provides access to real money gaming, lotteries, or charitable donations.

    Apps For Kids

    The next area to discuss is Apps for Kids. Any app that is within the “Kids” category, which means that it is intended to be used by kids. Due to the nature of these apps, there are some restrictions that developers need to comply with.

    “Apps published on the App Store must protect children’s data and provide only age-appropriate content. Apps must also require a parental gate in order to link out of the app, request permissions, or present purchasing opportunities. It’s critical that apps do not transmit personally identifiable information or device information to third parties, and that advertisements are human-reviewed for age appropriateness in order to be displayed.”

    Besides being conscious of children’s data, in some places this is necessary to comply with local laws.

    Closing Thoughts

    Developers have to keep up with the changes not only in tools and techniques, but also the changing landscape of building apps for Apple’s platforms. One of those areas is complying with the App Store Review Guidelines. What may have been accepted previously, may no longer be accepted. If you are going to be uploading a new version of your application anytime after March 3rd, 2020, you will want to comply with the new rules; especially the one regarding privacy of kids’ data. It would not be surprising if Apple begins outright rejecting apps that do not comply with protecting the data of kids starting on March 3rd.

    Source: Apple, Apple

  • Taking a Stance with my Apps and Books

    Taking a Stance with my Apps and Books

    Over the past couple of weeks there has been some discussion, and consternation, about Apple rejecting, allowing, and then subsequently pulling the HKMap Live app from the Hong Kong App Store. The controversy stems from the fact that the Apple ultimately pulled the app due to information received from the Hong Kong Cybersecurity and Technology Crime Bureau. The information provided to Apple is that the app was being used not only to avoid Police, as the makers of the app intend, but also to target police and other protesters. My thoughts on whether or not Apple should have pulled the app are mixed.

    Apple cannot just ignore the will of the Chinese government. This is due to Apple’s reliance not only on China for sales, but also because their manufacturing relies heavily on China. China has one of the most advanced and integrated supply chains in the world. China’s skill not only with manufacturing but also being able to source the quantities needed by Apple are unparalleled.

    One day Apple may be able to reduce their dependence on China, and they are making in-roads into being able to do so, but right now it is not currently something that is feasible. Due to their reliance on China, Apple is limited in how it can challenge their will and authority. This is not limited to just China, but China is one of the largest economies in the world and Apple must comply with all laws, including those in China and the Hong Kong territory.

    The whole situation has gotten me to thinking about my own apps and books. In particular, whether or not to continue to have them available in the stores of countries that do not meet with my own personal morals.

    Because of this I have come to the decision to remove my apps and books from sale within certain territories. These territories are ones that do not meet my personal moral standards. Which countries I have pulled my apps and books are listed below.

    • Bahrain
    • China (Mainland)
    • Colombia
    • Laos
    • Qatar
    • Russia
    • Saudi Arabia
    • Tajikistan
    • Turmenistan
    • Uzbekistan
    • Venezuela
    • Yemen

    If additional countries warrant the removal of my apps and books from sale, or if the countries listed above warrant me allowing the sales of my apps and books to continue, I will add and remove the countries as needed.

    I take stances in many different aspects of today’s society. These include which stores I will purchase from, which websites I will visit, and which company’s products I use (You may be able to guess one of the companies in the last category quite easily). One area where I did not necessarily take a standard, was when it came to where I will sell my creations.

    I had physical goods, then it would be less likely that my products would not be available in all countries. This is the case with my paperbacks, since they are only available from Amazon in select markets. Most can be ordered through a book store. Because my products are available digitally, I have always wanted to reach the largest possible audience. Therefore, my books and apps have always been available in all countries. But that is changing. I have decided to take a stance and not provide my apps and books for sale in some countries.

    This is a moral stance for me, one that I am able to take because it comprises 0.32% of my app sales ($6.14 over the lifetime of my apps) and 0.075%, or $5.60, of my book sales. Removing the apps and books from sale in these countries will not meaningfully affect my income. This is particularly true since the income from my apps and books is not my primary source of income, but I have decided to take this stance. If you do not agree and decide not to support me by purchasing my apps and books, then that is your decision to make.

  • My Thoughts on Tabs versus Spaces

    My Thoughts on Tabs versus Spaces

    There are two debates that will never be solved. The first is VIM vs. Emacs and the second is Tabs vs. Spaces. For the VIM vs. Emacs debate, I use VIM, only because it is the first linux-based editor I learned to use and no, I do not need to look up how to quit out of VIM (it is :q by the way, you can use :wq to write to file and quit). Instead, I would like to focus on the other eternal debate, Tabs versus Spaces. Before I delve too far into the topic, let me share some background.

    Day Job

    My job title at work is Developer. It has not always been this, but development is what I have been doing during my tenure there. Primarily, I create custom web applications and reports using PHP, HTML5, and CSS. Over the summer I spent some time re-writing some older code that I written. There are a variety of things to think about when making web apps, like following HTML standards, accessibility, alt on images, and the like. One aspect that is often overlooked is how the source code looks when it is viewed in an editor. Many developers overlook this aspect when it comes to web coding. Yes, the primary concern is really making sure the product works and meets standards, yet future maintainability should also be a concern particular when you need to go back and look at some code that you have not looked at in a while. You likely do not want to spend an inordinate amount of time deciphering your unformatted code.

    Being able to look at the source code and have it look decent is something that I have been doing for a long time. One way that I achieve this is to line up equals signs. Here is an example of what I mean:

    $short1           = "short";
    $longvariablename = "long";

    I could just use a single space or tab after the end of a variable name, but the code generally looks better when everything is lined up. Usually there are a number of variables within a particular function, file, or other scope of code. I would always try to line up the equals signs. This usually allows me to know what I am looking at without having to look all around the code.

    However, while I was reworking the code, I came to the realization that this is somewhat wasteful. Not necessarily because of the extra keystrokes, which is part of it, but because of the amount of space that the file takes up on the drive. There is another aspect that I was thinking about as well.

    Side Thought

    While I was re-writing the code, there was a nagging thought in the back of my mind, the size of current webpages. With the proliferation of JavaScript-laden webpages, as well as ubiquitous tracking in general, the size of webpages have significantly increased over the past decade. Web developers often overlook

    Tabs versus Spaces

    My position is to use tabs whenever possible. The reason I think this is due to the size of the file. Examples are always good, so let me provide one. Say you have a file that is 2 kilobytes in size. It is small, and this file uses tabs throughout where needed. The file size is small, and generally smaller than the size of a cluster on a hard drive or SSD. Now, imagine replacing all of those tabs with four spaces. You have now quadrupled the size of the file from 2 kilobytes to 8 kilobytes. Even with this, the size of the file may still be smaller or just at the size of a single cluster on a disk.

    Now, let us extrapolate that. Say for instance you have a 1 megabyte file that uses tabs and you replace each tab with four spaces. The file size has again quadrupled but now it is four megabytes in size. Even if the file is only called once in a while, it is still a rather large file. Let us extrapolate this further. Imagine the file is called 1000 times per day and at 4MB, that is now 4GB worth of bandwidth used. If you are on an internal network that may not be a concern, but on the internet it can become one.


    I should clarify, the above example is only meant for interpreted code, not complied code. For the source of compiled code, it may not make a difference. It should also be noted that you could use a strip-whitespace function for some languages, however, depending on the language this may result in the script being misinterpreted.

    I know some language style guides indicate what should be used, where most indicate spaces. If I was going to release something as open source and to be used by a wide variety of individuals I would likely follow the style guide of the language, but for personal projects, I will continue to use tabs.

    Closing Thoughts

    Maybe it is just my thinking, but reducing the overall code size of a project is a good thing, particularly if it is a web-based application. Not only will this save on storage space, but it will also save on the bandwidth consumed by users who are often saddled with a bandwidth cap. While I can understand the need for following a style guide, it is also possible that the time the style guide was written that some considerations were not taken into account. Lastly, do not do what the top image does, that is just wrong and is prone to errors.

  • wwrite 4.2.2 and wwriteLite 4.2.2 Now Available

    wwrite 4.2.2 and wwriteLite 4.2.2 Now Available

    There is a minor update available for my apps, wwrite and wwriteLite. This update fixes a situation where the app may have crashed when you clicked on the “Support via Twitter” button.

    If you have any issues, bug reports, or any other feedback, be sure to get a hold of me on twitter @waynesworkshop, or through the app.

  • Apple Entrepreneur Camp

    Apple Entrepreneur Camp

    Apple has announced a major initiative related to developers, and specifically for an under represented group of developers. When you look at the overall genetic makeup of developers, you may have noticed that there is a disproportionate number of males as developers, as compared to women. Apple has begun an initiative to help correct this imbalance. They call it their Entrepreneur Camp. The Apple Entrepreneur Camp is designed for organizations that are founded and led by women.

    There will be four two-week camps run over the course of the next year, these will take place during one of these times:

    January 28–February 8, 2019
    April 1–12, 2019
    July 22–August 2, 2019
    October 14–25, 2019

    There are some requirements before applying. These requirements are:

    • The organization must have a woman founder, co-founder, or CEO;
    • The organization must have a woman developer proficient in Swift or Objective-C
    • The organization must have a developed app or functional build created for any platform that you can demo live.

    Additionally, the applicant must have the following requirements:

    • You must be 18 years of age or older and proficient in English.
    • The woman founder, co-founder, or CEO, the woman developer, and another employee (if applicable) must be 18 years of age or older, proficient in English, and able to attend together for the entire two-week lab.
    • Attendees must be able to bring their own laptop to work on their code in the lab. After you have applied, and if you are accepted, you will be in a two-week lab.
    • If you are a woman who has founded you can learn about all of the details at Apple’s Entrepreneur Camp website.

    Per Apple’s site,

    Apple Entrepreneur Camp consists of an immersive technology lab, as well as mentorship, education, and support. Selected organizations receive:

    • One-on-one code-level guidance from Apple engineers at a two-week technology lab in Cupertino, California.
      Ongoing support from an Apple Developer representative for at least one year.
    • One year of membership in the Apple Developer Program.
    • Up to two tickets to WWDC for the woman* founder, co-founder, or CEO and woman developer.
    • Access to the Apple Entrepreneur Camp alumni network, a world-class group of inspiring and ambitious senior women leaders.

    If you are a woman, or part of a woman-led development company, it would behove you to apply for the Entrepreneur Camp. It is great to see Apple putting so much time and effort into help woman-led companies with mentoring as well as tickets to the next World Wide Developer’s Conference.

    You can read all about the camp at Apple’s Entrepreneur Camp website. Applications are open now.

  • Apple Announces WWDC 2018

    Apple Announces WWDC 2018

    Today Apple has announced the dates for its annual World Wide Developer Conference. The dates for WWDC 2018 are from June 4th through June 8th. Just like last year, the conference will be in San Jose, California.

    Similar to the last few years, Apple is offering developers an opportunity to register for a raffle for the tickets.

    “The opportunity to buy tickets to WWDC18 is offered by random selection. Registration is open until Thursday, March 22, 2018 at 10:00 a.m. PDT.*”. If you do register for the raffle, and you are able to buy a ticket, it will cost you $1599.

    It will be exciting to see what Apple has in store for the next versions of their operating systems. I will post a prediction post, closer to June 4th.